McCarthy 最初的 Lisp 以及此后的一些版本并没有像我们现在的 Common Lisp、Clojure、Scheme 等那样的宏功能……这一点我知道。
但是,我不清楚宏到底是如何产生的、什么实现首先拥有它们以及它们的动机是什么。如果您愿意的话,对论文和来源的引用将是理想的选择。
摘自 Lisp 的演变 (PDF):
宏似乎是由 Timothy P. Hart 于 1963 年在一份简短的 MIT AI 备忘录中引入 Lisp [Hart,1963]
参见:
AIM-57 作者:蒂莫西·P·哈特
LISP 的宏定义
1963 年 10 月
https://dspace.mit.edu/handle/1721.1/6111
在 LISP 1.5 中,特殊形式用于 三个逻辑上独立的目的:a) 到达列表,b) 允许 具有不定数的函数 参数,以及 c) 保留参数 免于被评价。新语言 口译员可以轻松满足需求 (a) 通过使 alist 成为 SPECIAL 类型 或 APVAL 类型实体。用途 (b) 和 (c) 可以通过合并一个来代替 定义中的宏指令扩展器。 我建议使用这样的扩展器。
John Shutt 的博士论文第一部分涉及 Lisp 的历史,我相信包括宏的引入。我读起来并不完全清楚,但他似乎声称宏或多或少与“可扩展语言”运动(独立于 lisp)有关,并且 M.D. McIlroy 1960 年的论文“宏扩展指令”编译器语言”,是可扩展语言运动的基础......这意味着宏在 1960 年被引入学术文献中。