【问题标题】:Behavior of let, eval, and quotelet、eval 和 quote 的行为
【发布时间】:2015-01-12 17:40:59
【问题描述】:

我试图了解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

【问题讨论】:

标签: lisp common-lisp


【解决方案1】:

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

在当前动态环境和空词法环境中评估表单。

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

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

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2019-11-14
    • 1970-01-01
    • 2020-07-23
    相关资源
    最近更新 更多