Dr.Racket を使用して、Scheme で次のコードを実行しようとしています。
(foldr or #f '(#f #f #f #t))
今、私はこれがうまくいくと思っていました。
(foldr + 0 '(1 2 3))
うまくいき、6を返しました。
しかし、論理的な or で実行しようとすると、「or: bad syntax in: or」が表示されます
私は何を間違っていますか?また、フォールドを使用せずにリストの or を計算する別の方法はありますか?
Dr.Racket を使用して、Scheme で次のコードを実行しようとしています。
(foldr or #f '(#f #f #f #t))
今、私はこれがうまくいくと思っていました。
(foldr + 0 '(1 2 3))
うまくいき、6を返しました。
しかし、論理的な or で実行しようとすると、「or: bad syntax in: or」が表示されます
私は何を間違っていますか?また、フォールドを使用せずにリストの or を計算する別の方法はありますか?
私のスキームはかなり弱いですが、私が間違っていない場合、または関数ではなくマクロであるため、高次の呼び出しでそれを渡すことはできません。ただし、ラムダでラップすることはできますが、見栄えが悪くなります。
(foldr (lambda (a b) (or a b)) #f '(#f #f #f #t)) => #t
引数の数が事前にわかっている場合は、 or が 0 個以上の引数を取ることに注意してください。
(or) => #f
(or #f) => #f
(or #t) => #t
(or #t #f) => #t
(or #f #f #f #f #f) => #f
それ以外の場合は、回答を提供するために私よりも経験豊富なSchemerが必要になります.