如果您阅读问题宏 -> 使用匿名函数,您会发现该->
宏不能很好地与匿名函数一起使用。要正确使用宏,您需要了解实现。从这个意义上说,宏是“泄漏的”——API 没有完全隐藏实现。
(足够复杂的)Clojure 宏是否总是存在泄漏的情况?
[比较:C 预处理器也会出现类似的问题,如果不小心处理宏参数,会出现奇怪的副作用。在这种情况下,可以通过将宏参数括在括号中(在宏内部)来解决问题。这并不能解决使用具有可变状态的 C 宏(即每次使用参数都会改变状态)的问题,但也许我们可以忽略函数式语言的这个问题,或者使用它let
来避免多次评估。]