Допустим, у меня есть специальный 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
Заранее оцените вашу помощь!