Выполнение функциональной программы (контекст, замыкание)
Чтобы понять, как выполняется функциональная программа, введем понятие контекста. Контекст – это соответствие между переменными и их значениями, которые являются S-выражениями. Каждое выражение в функциональной программе вычисляется в некотором контексте. Например, в контексте {x->(A B),y->(C D),z->127} выражение cons(z+1,cdr(x)) имеет значение (128 B).
Блоки "пусть” и "где” используются, чтобы установить новые связи. Выраж-е для значения новой локальной переменной вычисляется в некотором внешнем контексте. Определяемое блоком выражение вычисляется в новом контексте, полученном изменением внешнего контекста за счет добавления новых связей или вытеснения старых связей новыми в случае совпадения имен локальной переменной и переменной в контексте.
При вычислениях с l-выражениями, содержащими свободные переменные, для корректного вычисления функции необходимо знать значения, с которыми были связаны свободные переменные при определении функции. Это
делается с помощью замыкания, которое состоит из l-выражения и контекста, определяющего значения свободных переменных.