f
определяется как (lambda (y z) (list x y z))
, где x
определяется как 'sam
.
Давайте разберем это немного.
(let ([x 'sam])
(lambda (y z) (list x y z)))
Это оценивается каклямбда (которую я назову that_lambda
, потому что могу).
(let ([f that_lambda])
(f 'i 'am)) --> (sam i am)
Это оценивается как (that_lambda 'i 'am)
.
Поскольку that_lambda
был определен * в области действия *, где x
было 'sam
, x
используется внутри that_lambda
относится к 'sam
.
* Я так долго не делал Лисп, что не знаю,мои условия верны.