Exercise 4.18. Consider an alternative strategy for scanning out definitions that translates the example in the text to (lambda (let ((u '*unassigned*) (v '*unassigned*)) (let ((a ) (b )) (set! u a) (set! v b)) )) Here a and b are meant to represent new variable names, created by the interpreter, that do not appear in the user's program. Consider the solve procedure from section 3.5.4: (define (solve f y0 dt) (define y (integral (delay dy) y0 dt)) (define dy (stream-map f y)) y) Will this procedure work if internal definitions are scanned out as shown in this exercise? What if they are scanned out as shown in the text? Explain. ———————————————————————————————————————————————————————————————————————— It will not work if scanned out as above, since the definition of dy refers to y, which has the value '*unassigned* at the time that expression is evaluated. If scanned out as shown in the text, this will work, as the definition of y causes a set! y expression to be evaluated before the set! dy expression which uses the y value.