(wat-aro)

無職から有職者にランクアップしました

SICP 問題 2.80

(define (=zero? x) (apply-generic '=zero? x y))

;; scheme-numberパッケージに追加
(put '=zero? '(scheme-number)
     (lambda (x) (= x 0)))

;; rationalパッケージに追加
(put '=zero? '(rational)
     (lambda (x) (= (numer x) 0)))

;; complexパッケージに追加
(put '=zero? '(complex)
     (lambda (x) (and (= 0 (real-part x))
                      (= 0 (imag-part x)))))