SICP 全笔记

Exercise 2.8. Using reasoning analogous to Alyssa’s, describe how the difference of two intervals may be computed. Define a corresponding subtraction procedure, called sub-interval.

差值的最小值是一个数的最小值减去另一个数的最大值;而差值的最大值,是一个数的最大值减去另一个数的最小值。

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

;;; tests begin
(load "../testframe.scm")
(load "7-interval-selector.scm")

(let* ((i1 (make-interval 10 20))
       (i2 (make-interval 5 6))
       (result (sub-interval i1 i2)))
  (assertequal? (lower-bound result) (- 10 6))
  (assertequal? (upper-bound result) (- 20 5)))