開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: MIT/GNU Scheme
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション、原書: Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)(SICP))の3(標準部品化力, オブジェクトおよび状態)、3.3(可変データでのモデル化)、3.3.5(制約の拡散)、制約システムの使い方、制約システムの実装、コネクタの表現の問題 3.33を解いてみる。
その他参考書籍
問題3.33
コード(BBEdit)
sample.scm
(define (averager a b c) (let ((u (make-connector)) (v (make-connector))) (adder a b u) (multiplier c v u) (constant 2.0 v) 'ok)) (define a (make-connector)) (define b (make-connector)) (define c (make-connector))
入出力結果(Terminal, REPL(Read, Eval, Print, Loop))
1 ]=> (averager a b c) ;Value: ok 1 ]=> (probe "a" a) ;Value 2: #[compound-procedure 2 me] 1 ]=> (probe "b" b) ;Value 3: #[compound-procedure 3 me] 1 ]=> (probe "c(aとbの値の平均)" c) ;Value 4: #[compound-procedure 4 me] 1 ]=> (set-value! a 1 'user) Probe: a = 1 ;Value: done 1 ]=> (set-value! b 2 'user) Probe: b = 2 Probe: c(aとbの値の平均) = 1.5 ;Value: done 1 ]=> (forget-value! a 'user) Probe: a = ? Probe: c(aとbの値の平均) = ? ;Value: done 1 ]=> (set-value! a 1 'user) Probe: a = 1 Probe: c(aとbの値の平均) = 1.5 ;Value: done 1 ]=> (forget-value! a 'user1) ;Value: ignore 1 ]=> (forget-value! a 'user) Probe: a = ? Probe: c(aとbの値の平均) = ? ;Value: done 1 ]=> (set-value! a 1 'user1) Probe: a = 1 Probe: c(aとbの値の平均) = 1.5 ;Value: done 1 ]=> (forget-value! a 'user) ;Value: ignore 1 ]=> (forget-value! a 'user1) Probe: a = ? Probe: c(aとbの値の平均) = ? ;Value: done 1 ]=> (set-value! c 10 'user2) Probe: c(aとbの値の平均) = 10 Probe: a = 18. ;Value: done 1 ]=> (forget-value! b 'user) Probe: b = ? Probe: a = ? ;Value: done 1 ]=> (set-value! a 100 'me) Probe: a = 100 Probe: b = -80. ;Value: done
0 コメント:
コメントを投稿