<< Previous exercise (3.33) | Index | Next exercise (3.35) >>


 if given the following code: 
 (set-value! b 4 'user) 
 you will find that you can't get the value of a. Because in procedure multiplier, you only  have (has-value? b) true,  m1, m2 are not set, even they are the same, but multiplier doesn't know that. 

Furthermore, let's imagine that there were some way for the underlying constraint to only have either m1 or m2 set, then squarer would calculate the wrong result (it would set either m1 or m2 to b/m* instead of just the other value. Also, squarer can calculate the value of a given only b (sqrt) which multiplier cannot do.