Je n'ai qu'une connaissance limitée de Lisp (en essayant d'apprendre un peu pendant mon temps libre) mais pour autant que je sache, les macros Lisp permettent d'introduire de nouvelles constructions de langage et de la syntaxe en les décrivant dans Lisp lui-même. Cela signifie qu'une nouvelle construction peut être ajoutée en tant que bibliothèque, sans changer le compilateur / interpréteur Lisp.
Cette approche est très différente de celle des autres langages de programmation. Par exemple, si je voulais étendre Pascal avec un nouveau type de boucle ou un idiome particulier, je devrais étendre la syntaxe et la sémantique du langage, puis implémenter cette nouvelle fonctionnalité dans le compilateur.
Existe-t-il d'autres langages de programmation en dehors de la famille Lisp (c'est-à-dire en dehors de Common Lisp, Scheme, Clojure (?), Racket (?), Etc.) qui offrent une possibilité similaire d'étendre le langage à l'intérieur du langage lui-même?
ÉDITER
S'il vous plaît, évitez les discussions prolongées et soyez précis dans vos réponses. Au lieu d'une longue liste de langages de programmation qui peuvent être étendus d'une manière ou d'une autre, j'aimerais comprendre d'un point de vue conceptuel ce qui est spécifique aux macros Lisp en tant que mécanisme d'extension, et quels langages de programmation non Lisp offrent un concept qui leur est proche.