SICP 読み (118) 3.3.4 ディジタル回路のシミュレータ
問題 3.31 の件にて直前エントリにていくつか微妙にカン違いしていた。
その 1
例示されている set-signal! の実装は以下。
(define (accept-action-procedure! proc) (set! action-procedures (cons proc action-procedures)) (proc))
で、half-adder の input-1 と input-2 が set-signal! された時点で proc 手続きが適用されて carry と sum とその中間のローカルな回線が設定されると思っていた。agenda に登録された手続きは propagate が呼び出されるまでは適用されない。
で、初期化な手続きと状態が変わる手続きが一緒のタイミングで呼び出されるんですが、大丈夫なのか、というあたりが次の問題のナニ。
その 2
直前エントリにて
次に (set-signal! input-2 1) したら例示されているものと同じ出力になるはず。
http://d.hatena.ne.jp/yamanetoshi/20070708
と書いていたのですが、実機確認してみたら以下の出力が無い。
sum 16 New-value = 0
当たり前です。値が変わっていないんだのに。(とほほほ
蛇足ですが、時間の経過も微妙です。