問題2.57 – SICP(計算機プログラムの構造と解釈)その69
2009年01月14日
問題2.57
和の表現の改良
; 元の被加数 (define (augend s) (caddr s)) ; 任意個の項の和を扱えるようにした被加数 (define (augend s) (if (null? (cdddr s)) (caddr s) (cons '+ (cddr s))))
積の表現の改良
; 元の被乗数 (define (multiplicand p) (caddr p)) ; 任意個の項の積を扱えるようにした被乗数 (define (multiplicand p) (if (null? (cdddr p)) (caddr p) (cons '* (cddr p))))
実行結果
(deriv '(* x y (+ x 3)) 'x) gosh> (+ (* x y) (* y (+ x 3)))
うーん、難しい…、make-sum
や make-product
に手を加えようと試行錯誤していた…
プログラムを拡張して任意個の項の和と積が扱えるようにするには、deriv
手続きはおろか make-sum
, make-product
手続きにも"手を加える必要がない"ように抽象化の壁がたてられているということが解ればよしとするか。
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542