第一个带有宏的 Lisp?

问题描述 投票:0回答:2

McCarthy 最初的 Lisp 以及此后的一些版本并没有像我们现在的 Common Lisp、Clojure、Scheme 等那样的宏功能……这一点我知道。

但是,我不清楚宏到底是如何产生的、什么实现首先拥有它们以及它们的动机是什么。如果您愿意的话,对论文和来源的引用将是理想的选择。

clojure macros lisp common-lisp
2个回答
13
投票

摘自 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) 可以通过合并一个来代替 定义中的宏指令扩展器。 我建议使用这样的扩展器。


9
投票

John Shutt 的博士论文第一部分涉及 Lisp 的历史,我相信包括宏的引入。我读起来并不完全清楚,但他似乎声称宏或多或少与“可扩展语言”运动(独立于 lisp)有关,并且 M.D. McIlroy 1960 年的论文“宏扩展指令”编译器语言”,是可扩展语言运动的基础......这意味着宏在 1960 年被引入学术文献中。

© www.soinside.com 2019 - 2024. All rights reserved.