On a déjà abordé le thème de la macro-génération précédemment (cf. Chapitre 2.5, « Exemple de structurations connexes »). On la considère comme permettant de travailler sur des Types-Plats :
Type : une macro-définition, éventuellement paramétrée, permet de définir un modèle de suite de caractères.
Plat : une macro-expansion remplace l'invocation d'une macro-définition par du « texte en ligne », avec perte de la connaissance de la relation de dépendance entre la définition et l'utilisation de la macro.
Les exemples ont déjà été commentés : macro-by-example (pour le langage Lisp, [KoW 87]), MCOBOL (pour le langage COBOL, [TrY 80]) (cf. ibid.).
D'un tout autre point de vue, on peut citer [Knu 84] et la « Literate Programming » – la programmation littéraire. L'idée centrale, qui n'est pas nouvelle mais qui est abordée avec un regard nouveau, est de dire qu'un programme doit être lu par deux "individus" : (1) la Machine, avec son goût prononcé pour la précision et le souci du détail, et (2) l'Informaticien, qui préfère sans doute avoir une vision plus synthétique et explicative du problème exprimé. D. Knuth propose donc un langage, WEB, pour satisfaire les deux parties : partant d'un unique fichier, une première compilation fournit un texte compréhensible par la Machine, une seconde par l'Informaticien.