为什么有人会更喜欢 Scheme 宏而不是 Common Lisp 宏(我也真的很想知道,我不想成为巨魔)?
我作为 Lisp 新手的经验是,Common Lisp 风格的宏比 Scheme 的宏更容易学习。我还没有看到 Scheme 的宏有任何优势,但这当然并不意味着它们不存在。
我确实知道 Scheme 宏是“卫生的”,但我仍然不相信这值得额外的复杂性。但另一方面,显然有人相信这是必要的,否则就不会在 Common Lisp 中实现 Scheme 宏。
长话短说,有人可以为我辩护 Scheme 的宏吗?
最佳答案
方案宏引入了两个本质上正交的概念:卫生和模式匹配。卫生在像 Common Lisp 这样的 lisp2 中不太重要。模式匹配语言捕获了许多常见的宏惯用语,但存在一个问题,即它本质上是一种与 scheme 不同的语言。 Shriram Krishnamurthi 的 PLAI 可能是对 scheme 宏的最好介绍,以及它们背后的一些基本原理。第 36 和 37 章。
我怀疑人们用 common lisp 编写 scheme 样式宏系统的原因更多是为了模式匹配而不是卫生。
关于macros - 方案宏的优点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484094/