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