方案使用和运算符减少

时间:2014-04-20 19:58:35

标签: scheme racket

我正在尝试在reduce上使用逻辑操作,例如:

(reduce and '(#t #t #t) 0)

这给了我一个错误,我不知道为什么。

(reduce + '(1 2 3) 0)

这很好用,但是当我尝试使用内置的and操作时,它会失败。 有人可以解释一下为什么这不起作用?我被迫在逻辑操作上使用reduce

1 个答案:

答案 0 :(得分:4)

reduce需要函数作为其第一个参数,而and是一种特殊形式。由于特殊形式不是第一类对象,因此它们不能用作函数的参数(或存储在变量中)。

在这种情况下,reduce的替代方案是

(every identity list-of-booleans)

,而

(any identity list-of-booleans)

(reduce or ...)

的替代品