Альтернативная стратегия обработки определений
Рассмотрим альтернативную стратегию обработки определений, которая переводит пример из текста в
(lambda
(let ((u '*unassigned*)
(v '*unassigned*))
(let ((a )
(b ))
(set! u a)
(set! v b))
))
Здесь a и b представляют новые имена переменных, созданные интерпретатором, которые не встречаются в пользовательской программе. Рассмотрим процедуру solve из раздела 3.5.4:
(define (solve f y0 dt)
(define y (integral (delay dy) y0 dt))
(define dy (stream-map f y))
y)
Будет ли эта процедура работать, если внутренние определения преобразуются так, как предлагается в этом упражнении? А если так, как в тексте раздела? Объясните.
Комментарии отсутствуют.