質問

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

戻り値 10 それは私が期待していることですが、

(foldr and false '(true true false))

エラーが発生します

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

foldr 関数 (リストが 1 つあるため、2 つのパラメーターを取ります)、基本ケース、およびリストを受け取ります。リストに 0 個以上のブール値があり、それらがすべて true の場合、コードの 2 行目が true を返すことを期待しており、そのように動作すると考えました。しかし、どうやらそうではありません。

役に立ちましたか?

解決

And は特殊な形式なので機能しません foldr, を期待しています。 手順 2 番目の引数として。代わりにこれを試してください:

(foldr (lambda (x y) (and x y)) #t '(#t #t #f)) ;#t as base case

この特定のケースに対する別の代替方法は、 andmap:

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

他のヒント

Scheme Systemでは、andは通常マクロまたは特別な形式として定義され、手順としては機能しません。

#;1> +
#<procedure C_plus>
#;2> and

Error: unbound variable: and
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top