我试图在reduce
使用逻辑操作,例如:方案使用和运营商降低
(reduce and '(#t #t #t) 0)
这给了我一个错误,我不知道为什么。
(reduce + '(1 2 3) 0)
这很好,但是当我尝试使用内置的and
操作时,它失败了。 有人可以解释我为什么不工作?我被迫在逻辑运算上使用reduce
我试图在reduce
使用逻辑操作,例如:方案使用和运营商降低
(reduce and '(#t #t #t) 0)
这给了我一个错误,我不知道为什么。
(reduce + '(1 2 3) 0)
这很好,但是当我尝试使用内置的and
操作时,它失败了。 有人可以解释我为什么不工作?我被迫在逻辑运算上使用reduce
reduce
需要一个函数作为它的第一个参数,而and
是一个特殊的形式。由于特殊形式不是头等对象,因此它们不能用作函数的参数(或存储在变量中)。
在这种情况下reduce
一种替代方法是
(every identity list-of-booleans)
而
(any identity list-of-booleans)
是一个工作替代(reduce or ...)
是'every'和'any'标准的Scheme功能/构造S' –
@RSahu差不多。像'reduce'一样,它们在[SRFI-1列表库](http://srfi.schemers.org/srfi-1/srfi-1.html)中指定。 – Sylwester
@Terje D.我需要使用reduce函数。因为我知道,我认为我可以工作,并且是特殊形式而不是操作员。制作我自己的,会更容易,我想..非常感谢 – user3100209
'和'不是一个函数,如泰耶d表示,但你可以让你自己传递:'(foldl(lambda(xy)(and xy))#t'(#t #t))'''''t' :-) –