2015/11/01
SICP 問題 2.83
(define (raise x) (apply-generic 'raise x))
;; scheme-numberパッケージで
(define (scheme-number->rational n)
(make-rational n 1))
(put 'raise 'scheme-number scheme-number->rational)
;; rationalパッケージで
(define (rational->real x)
(/ (* 1.0 (numer x)) (denom x)))
(put 'raise 'rational rational->real)
;; real-numberパッケージで
(define (real->complex)
(make-complex-from-real-imag x 0))
(put 'raise 'real-number real->complex)