【发布时间】:2012-05-25 16:01:27
【问题描述】:
如果您阅读问题macro -> with anonymous functions,您会发现-> 宏不适用于匿名函数。要正确使用宏,您需要了解实现。从这个意义上说,宏是“有漏洞的”——API 并未完全隐藏实现。
(足够复杂的)Clojure 宏是否总是存在漏洞?
[比较:C 预处理器也会出现类似的问题,如果不小心处理宏参数,会出现奇怪的副作用。在这种情况下,可以通过将宏参数括在括号中(在宏内部)来解决问题。这并不能解决使用具有可变状态的 C 宏(即每次使用参数都会改变状态)的问题,但也许我们可以忽略函数式语言的这个问题,或者使用 let 来避免多次评估。]
【问题讨论】: