(define (squarer a b) (multiplier a a b)) ; When a value is provided for b, the multiplier does not deduce a value for a ; because it has two inputs with unknown value. The multiplier is not ; programmed to take advantage of two of its inputs being the same connector. ; ; When a value is provided for a, the multiplier sees two of its inputs have ; values (the two which are the same connector) and determines a value for b. ; 1 ]=> (load "constraints.txt") ; ; ;Loading "constraints.txt"... done ; ;Value: connect ; ; 1 ]=> (define a (make-connector)) ; ; ;Value: a ; ; 1 ]=> (define b (make-connector)) ; ; ;Value: b ; ; 1 ]=> (probe 'a a) ; ; ;Value: #[compound-procedure 12 me] ; ; 1 ]=> (probe 'b b) ; ; ;Value: #[compound-procedure 13 me] ; ; 1 ]=> (multiplier a a b) ; ; ;Value: #[compound-procedure 14 me] ; ; 1 ]=> (set-value! a 4 'user) ; ; Probe: b = 16 ; Probe: a = 4 ; ;Value: done ; ; 1 ]=> (forget-value! a 'user) ; ; Probe: b = ? ; Probe: a = ? ; ;Value: done ; ; 1 ]=> (set-value! b 4 'user) ; ; Probe: b = 4 ; ;Value: done