麦卡锡最初的Lisp和其他一些化身之后没有像我们现在在Common Lisp,Clojure,Scheme等中拥有的宏设施......我知道。
然而,我不清楚确切地说宏是如何形成的,首先是它们有什么实现,以及它们的动机是什么。如果您愿意,可以参考论文和来源。
答案 0 :(得分:12)
来自The Evolution of Lisp(PDF):
1963年Timothy P. Hart在一篇简短的麻省理工学院AI备忘录[Hart,1963]
请参阅:
AIM-57作者:Timothy P. Hart
LISP的MACRO定义
1963年10月
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中使用了特殊形式 三个逻辑上分开的目的:a) 到达alist,b)允许 函数具有不确定的数字 参数,和c)保持参数 从被评估。新的LISP 口译员可以轻松满足需求 (a)使alist成为SPECIAL类型 或APVAL类型的实体。用途(b)和(c) 可以通过合并来代替 定义中的MACRO指令扩展器。 我提议这样一个扩展器。
答案 1 :(得分:9)
John Shutt的PhD thesis第一部分涉及lisps的历史,包括宏的介绍,我相信。我在阅读时并不完全清楚,但似乎他声称用“可扩展语言”运动(这与lisp无关)或多或少地确定了宏,以及MD McIlroy 1960年的论文“宏扩展指令” “Compiler Languages”,是可扩展语言运动的基础......意味着宏在1960年被引入学术文献。