問題3.37 – SICP(計算機プログラムの構造と解釈)その135
2009年03月24日
問題3.37
除算については、 x / y = z
は x = y * z
として multiplier
で演算する。
(define (c+ x y) (let ((z (make-connector))) (adder x y z) z)) (define (c* x y) (let ((z (make-connector))) (multiplier x y z) z)) (define (c/ x y) (let ((z (make-connector))) (multiplier y z x) z)) (define (cv x) (let ((z (make-connector))) (constant x z) z))
実行結果
(define (celsius-fahrenheit-converter x) (c+ (c* (c/ (cv 9) (cv 5)) x) (cv 32))) (define C (make-connector)) (define F (celsius-fahrenheit-converter C)) (probe "Celsius temp" C) (probe "Fahrenheit temp" F) (set-value! C 25 'user) gosh> Probe: Celsius temp = 25 Probe: Fahrenheit temp = 77done (set-value! F 212 'user) gosh> *** ERROR: Contradiction (77 212) Stack Trace: _______________________________________ (forget-value! C 'user) gosh> Probe: Celsius temp = ? Probe: Fahrenheit temp = ?done (set-value! F 212 'user) gosh> Probe: Fahrenheit temp = 212 Probe: Celsius temp = 100done
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542