Реализации обработки внутренних определений
В этом упражнении мы реализуем только что описанный метод обработки внутренних определений. Мы предполагаем, что интерпретатор поддерживает
let
(см. упражнение
4.6
).
а. Измените процедуру
lookup-variable-value
(раздел 4.1.3) так, чтобы она, обнаруживая в качестве значения символ
*unassigned*
, сообщала об ошибке.
б. Напишите процедуру
scan-out-defines
, которая берет тело процедуры и возвращает его эквивалент без внутренних определений, выполняя описанное нами преобразование.
в. Вставьте
scan-out-defines
в интерпретатор, либо в
make-procedure
, либо в
procedure-body
. Какое из этих мест лучше? Почему?
Комментарии отсутствуют.