The Little Schemer を読んでいて、負の数の扱い方に興味を持ち始めました。数値が負か正かを判断する関数を構築する方法を理解することは、素晴らしい挑戦のように思えました。
これまでのところ、私はこの解決策を持っています:
(define negative?
(lambda (a)
(cond
((zero? a) #f)
(else (negativeHelper (sub1 a) (add1 a))))))
(define negativeHelper
(lambda (a b)
(cond
((zero? a) #f)
((zero? b) #t)
(else (negativeHelper (sub1 a) (add1 b))))))
これはうまく機能しているように見えますが、私の質問はnegative?
、ヘルパー関数なしで正しくできるかどうかです。