SICP 問題2.7

2017-10-14

発展問題:区間演算の1問目。

区間の抽象化の実装を規定しなかったので, Alyssaのプログラムは不完全である. 区間構成子は:

(define (make-interval a b) (cons a b))

である. 実装を完成させるため, 選択子 upper-bound と lower-bound を定義せよ.

ここではめんどくさいので省略してあるが、この問題文よりも前にもっと説明がたくさんある。 要は upper-bound は与えられる区間の上限を返して、 lower-bound は下限を返せばよさそう。

パット見、make-intervalcar が下限で、 cdr が上限っぽいので、それをそのまま書くのであれば、それだけでおしまい。ただし carが下限 みたいな制約をmake-interval に加えてあるわけではないので、なんとも言えない。そこらへんもちゃんとみるのであればどちらも取得して、 minmax あたりを使えば良さそう。

(define (upper-bound x)
  (max (car x) (cdr x)))

(define (lower-bound x)
  (min (car x) (cdr x)))

こんな感じでしょ。

※追記

回答例見たら、carcdr 返してるだけだった。