問題3.33
(define (averager a b c) (let ((d (make-connector)) (e (make-connector))) (adder a b d) (multiplier d e c) (constant 0.5 e) 'ok)) (define a (make-connector)) (define b (make-connector)) (define c (make-connector)) (averager a b c) (probe "A" a) (probe "B" b) (probe "Average" c) (set-value! a 3 'user) (set-value! b 5 'user) ;Probe: Average = 4.0 (forget-value! a 'user) (forget-value! b 'user) (set-value! a 3 'user) (set-value! c 4 'user) ;Probe: B = 5.0 ;; こんなやり方は初めて知った。 ;; 一つ一つの端点がネットワーク化されて他に情報伝達することによって動く。 ;; 制約プログラミング/論理型プログラミングというらしい。 ;; かなり感動的だ。プログラミング観がちょっと変わった気がする。