SICP 2.1
やっと2章に突入。
抽象データ型のコンストラクタを改良する問題。
ここで出てくるコンストラクタ・セレクタはHaskellのデータコンストラクタ・セレクタと同じ。
と思ったけど、2.1.3の注釈に抽象モデルと代数的仕様というのが書いてある。Haskellのは確か、代数的データ型とか言ったから、後者のモデルに基づいているのだろうか。よくわからないが、何か違いがあるのかもしれない。
(define (make-rat numer denom) (let* ((g (gcd numer denom)) (n (/ numer g)) (d (/ denom g))) (if (> d 0) (cons n d) (cons (- n) (- d))))) (define numer car) (define denom cdr) (define (print-rat x) (display (numer x)) (display "/") (display (denom x)) (newline)) (print-rat (make-rat 10 5)) (print-rat (make-rat 10 -5)) (print-rat (make-rat -10 5)) (print-rat (make-rat -10 -5))