Первый 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 году.