2010-11-09 22 views
15

El Lisp original de McCarthy y algunas encarnaciones a partir de entonces no tenían una función macro como la que ahora tenemos en Common Lisp, Clojure, Scheme, etc ... Esto lo sé.Primer Lisp con macros?

Sin embargo, no me queda claro cómo llegaron a ser las macros, qué implementaciones las tuvieron primero y qué las motivó. Las referencias a documentos y fuentes serían ideales si lo desea.

Respuesta

12

de The Evolution of Lisp (PDF):

macros parecen haber sido introducido en Lisp por Timothy P. Hart en 1963 en un corto MIT AI Memo [Hart, 1963]

Ver:

AIM-57 Autor [s]: Timothy P. Hart

definiciones de macro para LISP

de octubre de 1.963 mil

ftp://publications.ai.mit.edu/ai-publications/0-499/AIM-057.ps

ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-057.pdf

En LISP 1.5 especial los formularios se usan para tres purp lógicamente separados oses: a) para llegar a la lista, b) para permitir que las funciones tengan un número indefinido de argumentos, yc) para evitar que se evalúen los argumentos . Los nuevos intérpretes de LISP pueden satisfacer fácilmente la necesidad (a) haciendo que la lista sea de tipo ESPECIAL o entidad de tipo APVAL. Los usos (b) y (c) se pueden reemplazar incorporando un expansor de instrucciones MACRO en define. Propongo un expansor de este tipo.

+0

Gracias por el enlace. Tengo ganas de profundizar en este fin de semana. – fogus

9

Primera parte de John Shutt PhD thesis se refiere a la historia de lisps, incluida la introducción de macros, creo. Para mí no está del todo claro al leer, pero parece que afirma que las macros están más o menos identificadas con un movimiento de "idiomas extensibles" (que es independiente del ceceo), y ese documento de MD McIlroy de 1960, "Instrucciones de extensión macro" compilador de idiomas", fue fundamental para el movimiento extensible idiomas ... lo que implica que las macros se introdujeron en la literatura académica en 1960.

+3

Hmmm. Ojalá hubiese una manera de marcar múltiples respuestas como "la respuesta". :-( – fogus

Cuestiones relacionadas