方案/球拍:倍布尔

(foldr + 0 '(1 2 3 4)) 

回报10这是我所期望的,但方案/球拍:倍布尔

(foldr and false '(true true false)) 

给我的错误

and: expected an open parenthesis before and, but found none 

foldr需要一个功能(它有两个参数,因为我有一个列表),一个基本情况和一个或多个列表。我希望我的第二行代码能够返回true,如果这个列表的布尔值超过零,并且它们都是真的,那我就是这么想的。但显然不是。

回答:

And是一种特殊形式,不适用于foldr,它期望程序作为其第二个参数。尝试这个代替:

(foldr (lambda (x y) (and x y)) #f '(#t #t #f)) 

另一种替代方法对于此特定情况下将使用andmap

(andmap identity '(#t #t #f)) 

回答:

在计划系统,and通常被定义为一个宏或特殊形式,而不是作为一个过程,这就是为什么它不工作:

#;1> + 

#<procedure C_plus>

#;2> and

Error: unbound variable: and

以上是 方案/球拍:倍布尔 的全部内容, 来源链接: utcz.com/qa/259844.html

回到顶部