Если я правильно помните, всякий раз, когда вы выполняете лямбда, создается новая среда, в которой значения аргументов привязаны к их именам. Эта среда наследуется от какой-либо среды, изначально объявленной лямбдой.
Первое окружение во всех случаях - это глобальная среда - здесь находится (define x 10)
. Затем, как я уже говорил, добавьте новую среду, когда вы выполняете лямбда (как во второй строке). Эта среда наследуется от той среды, в которой была выполнена лямбда.
Первое, что вы сделали (начиная со второй строки), - это первая лямбда. Для этого вам необходимо оценить аргументы. Поскольку вы оцениваете аргументы до фактического ввода первой лямбда, вторая лямбда объявляется в глобальной среде.
Далее создается среда для первого вызова лямбды (наследуется от глобальной среды). Здесь x
привязан к 6, а y
привязан ко второй лямбда. Затем, чтобы сделать +
, вызывается вторая лямбда. Поскольку он был объявлен в глобальной сети , его новая среда наследуется от этого, а не от первой среды лямбды. Это означает, что для второго, x
привязан к 10, а не к 6.
Надеюсь, это объясняет все понятно.
Чтобы уточнить: будут три среды - глобальная среда и одна среда для вызова функции. Обе среды-вызовы функций наследуются от глобальной среды. Первый лямбда-код будет работать в собственной среде, а второй лямбда-код будет запускать вторую лямбду.
Кроме того, проверьте envdraw
, который можно найти здесь: http://inst.eecs.berkeley.edu/~cs3s/stk/site-scheme/envdraw/ Если вы читали Объявить файл, он расскажет вам, как получить его. Вам нужно будет использовать STk, конкретный интерпретатор Схемы.
envdraw
рисует схемы окружающей среды для схемы автоматически.
Отказ от ответственности: Я никогда не беспокоился envdraw
, когда принимал класс, который использовал Scheme, но он был одобрен моим профессором (по-видимому, один из его учеников написал его в тот же день), и другие люди, похоже, прекрасно его использовали.
Тихону дал очень хороший ответ, но есть какая-то дополнительная информация, содержащиеся в данном разделе SICP, которая включает в себя схему на ментальной модели для того, как закрытие оценивается: http://mitpress.mit. Edu/SICP/полный текст/книга/б ООК-Z-Н-21.html #% _ sec_3.2 – spacemanaki