問題3.33 – SICP(計算機プログラムの構造と解釈)その131
2009年03月19日
問題3.33
制約ネットワークで表した、a + b = 2 * c
の図。
(define (averager a b c) (let ((u (make-connector)) (x (make-connector))) (adder a b u) (multiplier c x u) (constant 2 x) 'ok)) (define A (make-connector)) (define B (make-connector)) (define C (make-connector)) (averager A B C) (probe "A" A) (probe "B" B) (probe "C" C)
実行結果
(set-value! A 10 'user) gosh> Probe: A = 10done (set-value! B 20 'user) gosh> Probe: B = 20 Probe: C = 15done (set-value! C 50 'user) gosh> *** ERROR: Contradiction (15 50) Stack Trace: _______________________________________ (forget-value! A 'user) ;; B は forget しないので 20 のまま gosh> Probe: A = ? Probe: C = ?done (set-value! C 50 'user) gosh> Probe: C = 50 Probe: A = 80done
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542