区間をデータで表現するというお話が今日から始まりましたが、今までと特にかわらない。
(define (make-interval a b) (cons a b))
たしたり掛けたり割ったりします。引き算がないですが、明日の課題らしい。
(define (add-interval x y) (make-interval (+ (lower-bound x) (lower-bound y)) (+ (upper-bound x) (upper-bound y)))) (define (mul-interval x y) (let ((p1 (* (lower-bound x) (lower-bound y))) (p2 (* (lower-bound x) (upper-bound y))) (p3 (* (upper-bound x) (lower-bound y))) (p4 (* (upper-bound x) (upper-bound y)))) (make-interval (min p1 p2 p3 p4) (max p1 p2 p3 p4)))) (define (div-interval x y) (mul-interval x (make-interval (/ 1.0 (upper-bound y)) (/ 1.0 (lower-bound y)))))
今日の課題は、区間の抽象データ型から、区間の上限と下限を取り出すのを作れとか言う話なのですが、
(define upper-bound cdr) (define lower-bound car)
それぞれ一行で書けてしまう問題で、なんだかなー。なんだかなー。