Первый Lisp с макросами?

McCarthy оригинал Lisp, и некоторое количество воплощений после этого не было объекта макроса, как мы теперь имеем в Common Lisp, Clojure, Scheme и т.д. Это я знаю.

Тем не менее, мне непонятно, каким образом появились макросы, какие реализации (ов) у них были первыми, и что их мотивировало. Ссылки на документы и источник были бы идеальными, если хотите.

Ответы

Ответ 1

Из Эволюция Lisp (PDF):

Макросы, по-видимому, были введены в Lisp Тимоти П. Харт в 1963 году в коротком MIT AI Memo [Hart, 1963]

См:

AIM-57 Автор [ы]: Тимоти П. Харт

Определения MACRO для Lisp

Октябрь 1963 года

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

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

В Lisp 1,5 специальные формы используются для три логически отдельных цели: а) для достижения алиста, б) разрешить функции имеют неопределенное число аргументов и в) держать аргументы от оценки. Новый LISPпереводчики могут легко удовлетворить потребности (а), сделав alist СПЕЦИАЛЬНЫМ или объект типа APVAL. Использует (b) и (c) могут быть заменены включением Расширитель инструкции MACRO в определении. Я предлагаю такого расширителя.

Ответ 2

John Shutt Докторская диссертация первая часть касается истории лизиса, включая введение макросов, я считаю. Это не совсем ясно для меня, но кажется, что он утверждает, что макросы более или менее идентифицированы с движением "расширяемые языки" (которое не зависит от lisp), и что документ MD McIlroy 1960 "Macro Extension Instructions of Compiler Languages ​​", было основополагающим для движения расширяемых языков... подразумевая, что макросы были введены в академическую литературу в 1960 году.