理系学生日記

おまえはいつまで学生気分なのか

問題2-7

区間をデータで表現するというお話が今日から始まりましたが、今までと特にかわらない。

(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)

それぞれ一行で書けてしまう問題で、なんだかなー。なんだかなー。