我正在尝试在reduce
上使用逻辑操作,例如:
(reduce and '(#t #t #t) 0)
这给了我一个错误,我不知道为什么。
(reduce + '(1 2 3) 0)
这很好用,但是当我尝试使用内置的and
操作时,它会失败。
有人可以解释一下为什么这不起作用?我被迫在逻辑操作上使用reduce
答案 0 :(得分:4)
reduce
需要函数作为其第一个参数,而and
是一种特殊形式。由于特殊形式不是第一类对象,因此它们不能用作函数的参数(或存储在变量中)。
在这种情况下,reduce
的替代方案是
(every identity list-of-booleans)
,而
(any identity list-of-booleans)
是(reduce or ...)