Compile-variable и compile-assignment с командами лексической адресации
С помощью find-variable из упражнения 5.41 перепишите compile-variable и compile-assignment так, чтобы они порождали команды лексической адресации. В случаях, когда find-variable возвращает not-found (то есть, когда переменной нет в окружении времени компиляции), нужно заставлять генераторы кода использовать, как и раньше, операции вычислителя для поиска связывания. (Единственное место, где может оказаться переменная, не найденная во время компиляции — это глобальное окружение, которое является частью окружения времени выполнения, но не окружения времени компиляции. Поэтому, если хотите, можете заставить операции вычислителя искать сразу в глобальном окружении, которое можно получить с помощью операции (op get-global-environment), а не в полном локальном окружении, которое хранится в env.) Проверьте измененный компилятор на нескольких простых примерах, например, на вложенной комбинации lambda из начала этого раздела.
Это упражнение еще никто не завершил. Ты будешь первым!
Комментарии отсутствуют.