标签: clojure
我无法在Clojure(1.2)中的一系列布尔值上使用逻辑函数。由于逻辑函数是宏,以下两种方法都不起作用:
(reduce and [... sequence of bools ...]) (apply or [... sequence of bools ...])
错误消息说我“无法获取宏的值:#'clojure.core/and”。如何在不编写样板代码的情况下应用这些逻辑函数(宏)?
#'clojure.core/and
答案 0 :(得分:51)
请勿 - 改为使用every?和some。
every?
some
答案 1 :(得分:14)
Michal的答案已经确定,但是当您想要将宏用作函数时,以下替代方法在类似情况下非常有用:
(reduce #(and %1 %2) [... sequence of bools ...])
基本上你只需将宏包装在一个匿名函数中。
考虑这种方法有几个很好的理由: