SICP 2.8

自信なし。そもそも区間の引き算ってどういう意味だろう。

(define make-interval cons)
(define upper-bound car)
(define lower-bound cdr)

(define (sub-interval x y)
  (make-interval (- (upper-bound x) (upper-bound y))
                 (- (lower-bound x) (lower-bound y))))

; test
(let ((p1 (make-interval 1.1 2.5))
      (p2 (make-interval 4.1 3.2)))
  (let ((p3 (sub-interval p1 p2)))
    (print (upper-bound p3))
    (print (lower-bound p3))))

↑これじゃダメらしい。やっぱり引き算の定義が間違ってる。

(define (sub-interval x y)
  (make-interval (- (lower-bound x) (upper-bound y))
                    (upper-bound x) (lower-bound y))))