Exercise 3.31. The internal procedure accept-action-procedure! defined in make-wire specifies that when a new action procedure is added to a wire, the procedure is immediately run. Explain why this initialization is necessary. In particular, trace through the half-adder example in the paragraphs above and say how the system's response would differ if we had defined accept-action-procedure! as (define (accept-action-procedure! proc) (set! action-procedures (cons proc action-procedures))) ———————————————————————————————————————————————————————————————————————— This is necessary to meet the programmer's expectations of how such a system should work by analogy with a real circuit. Since action procedures are only called when the value on an input wire changes, many changes would not fully propagate through larger circuits even after all of the inputs had changed once. For example, creating a half-adder circuit and then setting the A input to 1 would not change the output of the inverter (E in figure 3.25), since the input to the inverter would still be 0. To fully 'initialize' such a model, it would be necessary to exercise every possible combination of inputs to each component before correct output would be assured.