cond
の各状態の後、暗黙のbegin
あります、そしてあなたが括弧のペアを残しので、あなたのコードは、あなたの最初の条件があるので
(define (DivByThree real)
(cond
(zero? (begin (remainder real 3) #t))
(else #f)))
に相当しますzero?
は「真実」(それは#f
ではない)であり、その条件の値はシーケンスの値です(remainder real 3) #t)
の場合、値は常に#t
です。
これは正しいでしょう:
(define (DivByThree real)
(cond
((zero? (remainder real 3)) #t))
(else #f)))
が、パターン
(cond ((p #t)
(else #f)))
と
(if p #t #f)
は不要であり、両方がちょうどp
に置き換えることができます。 Schemeのプログラマは通常、疑問符でキャメルケースとエンド述語を使用していないので
、より多くの慣用的な定義は、整数でなければなりませんパラメータの「本当」の名前を使用していること
(define (div-by-three? integer)
(zero? (remainder integer 3)))
注だろう非常に誤解を招く。
適切な指揮文を取得するには、「ゼロ(残り3本物の)?」:文「場合」また、唯一の2つの条件がある場合は、1を使用することができます。 – rnso