2

私は式を持っています:(map some-proc some-list) これは、たとえば、に評価され'(#f #f #f)ます。

このリストのすべてのブール値が true かどうかを確認したいと思います。ただし、 注意しながら(and '(#f #f #f))返品します。'(#f #f #f)#f

ここで、DrRacket 環境で(apply and '(#f #f #f))次のエラーが発生 します。and: bad syntax in: andRacket Reference には、(apply + '(1 2 3))私の問題と同じように見える例が示されているため、これは紛らわしいです。

私は何を間違って#fいるの'(#f #f #f)ですか?

4

2 に答える 2

7

これにはandmapを使用できます:

> (andmap (lambda (x) x) '(#f #f #f))
#f

問題は、すべての引数の評価を回避するために、 andがプロシージャではなくマクロであるという事実から生じます。

ただし、Lazy Racket では機能しますが、はプロシージャです。

于 2013-03-02T08:47:24.490 に答える
2

それを行う別の方法:

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

または、userpa のソリューション (andmap) を書き直します。

(andmap identity '(#f #f #f))
于 2013-03-02T09:15:37.833 に答える