Solo tengo un conocimiento limitado de Lisp (tratando de aprender un poco en mi tiempo libre), pero hasta donde entiendo, las macros de Lisp permiten introducir nuevas construcciones y sintaxis del lenguaje describiéndolas en Lisp. Esto significa que se puede agregar una nueva construcción como una biblioteca, sin cambiar el compilador / intérprete Lisp.
Este enfoque es muy diferente al de otros lenguajes de programación. Por ejemplo, si quisiera extender Pascal con un nuevo tipo de bucle o algún idioma en particular, tendría que extender la sintaxis y la semántica del lenguaje y luego implementar esa nueva característica en el compilador.
¿Existen otros lenguajes de programación fuera de la familia Lisp (es decir, aparte de Common Lisp, Scheme, Clojure (?), Racket (?), Etc.) que ofrecen una posibilidad similar de extender el lenguaje dentro del lenguaje mismo?
EDITAR
Por favor, evite discusiones extensas y sea específico en sus respuestas. En lugar de una larga lista de lenguajes de programación que pueden ampliarse de una forma u otra, me gustaría entender desde un punto de vista conceptual qué es específico de las macros Lisp como mecanismo de extensión y qué lenguajes de programación que no son de Lisp ofrecen algún concepto. eso está cerca de ellos.