macros - 方案宏的优点是什么?

标签 macros lisp scheme common-lisp

为什么有人会更喜欢 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/

相关文章:

recursion - 方案无限递归

macros - 如何运行 Abaqus 宏 (.py) 脚本

macros - 当我定义一个宏并且只使用一个足够罕见的名称作为临时变量时,会出现什么问题?

java - 从外部软件(Java、Scheme)调用 Isabelle

emacs - 在 emacs 中重新绑定(bind)光标移动

web-applications - 如何告诉 Hunchentoot 在哪里可以找到要提供的静态网页?

garbage-collection - 在函数式语言中使用大型数据结构时减少垃圾收集时间

macros - 用于测试的 C 宏 : "If more than one defined"

c++ - C++ 中的多语句宏

C 宏删除参数列表中的重复项