【发布时间】:2013-07-08 12:03:19
【问题描述】:
我是 Clojure 的新手。我是几个月前开始的。 我正在尝试学习宏。
我最初对 Clojure 中宏和高阶函数之间的区别感到困惑,因为高阶函数可以接受 lambda,并根据任何条件和过滤器执行其中一个它想要多少次。
所以我在 StackOverflow 上发布了一个 question 并附有一个简单的例子。 我从答案中消除了我的疑虑。
这是我理解的,
- 与评估主体的函数不同,宏不会评估所有参数。
- 宏可以选择评估什么和不评估什么,以及如何使用引号、取消引用和拼接语法将一段代码转换为另一段代码。
- 然后评估来自宏的最终代码。
所以我的问题是,它与 C 中使用的预处理器指令和宏有何不同? Lisp/Clojure 宏为开发人员提供了 C 宏完全缺乏且经常被广泛使用的功能。
【问题讨论】:
标签: clojure