Реализации обработки внутренних определений

В этом упражнении мы реализуем только что описанный метод обработки внутренних определений. Мы предполагаем, что интерпретатор поддерживает let (см. упражнение 4.6 ).

а. Измените процедуру lookup-variable-value (раздел 4.1.3) так, чтобы она, обнаруживая в качестве значения символ *unassigned* , сообщала об ошибке.

б. Напишите процедуру scan-out-defines , которая берет тело процедуры и возвращает его эквивалент без внутренних определений, выполняя описанное нами преобразование.

в. Вставьте scan-out-defines в интерпретатор, либо в make-procedure , либо в procedure-body . Какое из этих мест лучше? Почему?


Комментарии отсутствуют.

Необходима авторизация

Вы должны авторизоваться для создания комментария.

Вход