Exercise 4.70. What is the purpose of the let bindings in the procedures add-assertion! and add-rule! ? What would be wrong with the following implementation of add-assertion! ? Hint: Recall the definition of the infinite stream of ones in section 3.5.2: (define ones (cons-stream 1 ones)). (define (add-assertion! assertion) (store-assertion-in-index assertion) (set! THE-ASSERTIONS (cons-stream assertion THE-ASSERTIONS)) 'ok) ———————————————————————————————————————————————————————————————————————— The second argument to cons-stream is deferred. In the case of a list: (define l '(b c)) (set! l (cons 'a l)) When the cons is evaluated, l will be looked up, and the current value used in the list cons returns. However, in the case of cons-stream as above, the reference to THE-ASSERTIONS will be evaluated only when it is needed, at which point the variable name THE-ASSERTIONS has already been assigned the newly extended stream by the set! call.