Скажем, у меня есть специальный var:
(defvar x 20)
то я делаю следующее:
(let ((x 1)) (eval '(+ x 1))
который оценивается в 2.
Согласно CLHS, eval "Оценивает форму в текущей динамической среде и нулевой лексической среде". Итак, я ожидаю получить 21 вместо 2.
Я что-то пропустил?
Теперь, если у меня нет динамической привязки для символа y, оценка
(let ((y 1)) (eval '(+ y 1))
Я получаю условие: "Переменная Y несвязана", что имеет смысл, поскольку для y нет динамической привязки.
Примечание. Я использую SBCL 1.0.57
Оцените свою помощь заранее!