带有宏的第一个Lisp?

时间:2010-11-09 20:32:32

标签: clojure macros lisp common-lisp

麦卡锡最初的Lisp和其他一些化身之后没有像我们现在在Common Lisp,Clojure,Scheme等中拥有的宏设施......我知道。

然而,我不清楚确切地说宏是如何形成的,首先是它们有什么实现,以及它们的动机是什么。如果您愿意,可以参考论文和来源。

2 个答案:

答案 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年被引入学术文献。