eval форма, предназначенная для оценки заданной формы в нулевой лексической среде, я не получаю того, что ожидаю

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

Заранее оцените вашу помощь!

11
задан Svarog 24 July 2012 в 18:10
поделиться