問題2.80 – SICP(計算機プログラムの構造と解釈)その90
2009年02月03日
問題2.80
各算術演算パッケージに =zero?
手続きとインターフェースを追加する。
;; 通常(ordinary)の算術演算パッケージに =zero? を追加 (put '=zero? '(scheme-number) (lambda (x) (= x 0))) ;; 有理数算術演算パッケージに =zero? を追加 (define (=zero-rat? x) (= (numer x) 0)) (put '=zero? '(rational) (lambda (x) (=zero-rat? x))) ;; 複素数算術演算パッケージに =zero? を追加 (define (=zero-complex? z1) (and (= (real-part z1) 0) (= (imag-part z1) 0))) (put '=zero? '(complex) (lambda (z1) (=zero-complex? z1)))
汎用算術演算手続きに =zero?
を登録する。
(define (=zero? x) (apply-generic '=zero? x))
実行結果
(=zero? 0) gosh> #t (=zero? 1) gosh> #f (=zero? (sub 3 (add 1 2))) gosh> #t (=zero? (make-rational 1 2)) gosh> #f (=zero? (make-rational 0 2)) gosh> #t (=zero? (make-complex-from-real-imag 1 2)) gosh> #f (=zero? (make-complex-from-real-imag 0 0)) gosh> #t
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542