SICP 2.12
percentの実装でcenterを呼ぶのはアリかどうか。percentの計算でupper-boundかlower-boundのどちらかが2回呼ばれることになるのがちょっと気になる。でもcenterを呼ばないとwidthの実装がcenterとpercentの両方に出てくるので、それも気になる。
(define make-interval cons) (define lower-bound car) (define upper-bound cdr) (define (make-center-percent c p) (let ((w (/ (* c p) 100.0))) (make-interval (- c w) (+ c w)))) (define (center i) (/ (+ (lower-bound i) (upper-bound i)) 2)) (define (percent i) (let* ((c (center i)) (w (- (upper-bound i) c))) (* 100 (/ w c)))) ; test (make-center-percent 3.0 10) (percent (make-interval 2.7 3.3))