我试图了解 let 的行为。
为什么 case2 会给我一个错误?

;; case1: worked fine.
(let ((NF 5)) NF)
5

;; case2: got an error
(let ((NF 5)) (eval 'NF))
error: The variable NF is unbound

最佳答案

EVAL 无权访问词法变量。 CLHS 说:



如果您声明变量 special 它将起作用,因为它执行动态绑定(bind)而不是词法绑定(bind)。

(let ((NF 5))
  (declare (special NF))
  (eval 'NF))
5

关于lisp - let、eval 和 quote 的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27907764/

10-12 14:12