Первый Лисп с макросами? - PullRequest
       24

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

15 голосов
/ 09 ноября 2010

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

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

Ответы [ 2 ]

12 голосов
/ 10 ноября 2010

С Эволюция Лиспа (PDF):

Макросы, похоже, были введены в Лисп Тимоти П. Хартом в 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 могут легко удовлетворить потребность (a), сделав alist сущностью типа SPECIAL или APVAL.Использование (b) и (c) может быть заменено включением расширителя команд MACRO в define.Я предлагаю такой расширитель.

9 голосов
/ 09 ноября 2010

Тезис Джона Шотта PhD Первая часть посвящена истории ошибок, включая введение макросов, я полагаю.При чтении мне не совсем понятно, но кажется, что он утверждает, что макросы более или менее идентифицированы с движением «расширяемых языков» (которое не зависит от lisp), и что статья доктора Макилроя 1960 года «Инструкции по расширению макросов»языков компиляторов ", был основополагающим для движения расширяемых языков ... подразумевая, что макросы были введены в академическую литературу в 1960 году.

...