(load "constraints.txt") (define (celsius-fahrenheit-converter x) (c+ (c* (c/ (cv 9) (cv 5)) x) (cv 32))) (define (c+ x y) (let ((z (make-connector))) (adder x y z) z)) (define (c- x y) (let ((z (make-connector))) (adder y z x) z)) (define (c* x y) (let ((z (make-connector))) (multiplier x y z) z)) (define (c/ x y) (let ((z (make-connector))) (multiplier y z x) z)) (define (cv x) (let ((y (make-connector))) (constant x y) y)) ; 1 ]=> (define C (make-connector)) ; ; ;Value: c ; ; 1 ]=> (define F (celsius-fahrenheit-converter C)) ; ; ;Value: f ; ; 1 ]=> (probe "Celsius" C) ; ; ;Value: #[compound-procedure 12 me] ; ; 1 ]=> (probe "Fahrenheit" F) ; ; ;Value: #[compound-procedure 13 me] ; ; 1 ]=> (set-value! C 25 'user) ; ; Probe: Celsius = 25 ; Probe: Fahrenheit = 77 ; ;Value: done ; ; 1 ]=> (forget-value! C 'user) ; ; Probe: Celsius = ? ; Probe: Fahrenheit = ? ; ;Value: done ; ; 1 ]=> (set-value! F 212 'user) ; ; Probe: Fahrenheit = 212 ; Probe: Celsius = 100 ; ;Value: done