3.3.5 制約の拡散 制約の拡散のポイントは以下の通り。 登場人物は2人 コネクタと制約(constraint) コネクタは1つ以上の制約をリストとして持っている(1つ以上の制約と接続されている) 制約は自分が接続しているコネクタの値が変更したときに呼ばれる手続きを定義しておく。 その手続きを呼ぶと制約が接続しているコネクタの値が変わるかもしれない。 コネクタは自分自身の値が set-value! で変更されると接続している上で説明した制約の手続きを呼ぶ。 その手続きで他のコネクタの値が変更されれば、値の変更が伝播していくという仕組み。 問題3.33 (load "./3.3.5.scm") (define (averager a b c) (let ((s (make-connector)) (t (make-connector))) (adder a b s) (constant 0
![関数型言語の勉強にSICPを読もう - (43) 3章 - 標準部品化力、オブジェクトおよび状態 (167-175ページ) - higepon blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/e998c1b540ad7b6f8c53f744d3ffbd2413ae37ae/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fh%2Fhigepon%2F20060527%2F20060527212606.jpg)