Como a forma eval deveria avaliar uma determinada forma em um ambiente léxico nulo, eu não entendo o que eu espero
Digamos que eu tenha um var especial:
(defvar x 20)
então eu faço o seguinte:
(let ((x 1)) (eval '(+ x 1))
que avalia a 2.
De acordo com o CLHS, eval "Avalia a forma no ambiente dinâmico atual e no ambiente léxico nulo". Então, eu esperaria obter 21 em vez de 2.
Estou esquecendo de algo?
Agora, se eu não tenho ligação dinâmica para o símbolo y, avaliando
(let ((y 1)) (eval '(+ y 1))
Eu obtenho condição: "A variável Y é desvinculada", o que faz sentido, já que não há ligação dinâmica para y.
Nota: estou usando o SBCL 1.0.57
Aprecie sua ajuda com antecedência!