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