为什么在setq()时LISP中没有出现关于未定义变量的错误?

bar*_*kin 2 lisp emacs

在我的Emacs配置中,我有这样一个字符串:

(setq ibuffer-saved-filter-groups
  (quote (("default"
           ("dired"
            (mode . dired-mode))
           ("System"
            (or (name . "\*scratch\*")
                (name . "\*Messages\*")))
           ("SVN"
            (name . "^\\*vc-.*\\*$"))))))
Run Code Online (Sandbox Code Playgroud)

变量namemode未定义但代码被正确评估.当我尝试自己做这样的时候:

(some-var . "some-value")
Run Code Online (Sandbox Code Playgroud)

我收到有关未定义变量的错误some-var.

Chr*_*ung 7

引用基准时,不评估任何内容.例如:

foo
Run Code Online (Sandbox Code Playgroud)

计算绑定到标识符的值foo,而

'foo
Run Code Online (Sandbox Code Playgroud)

要么

(quote foo)
Run Code Online (Sandbox Code Playgroud)

评估符号foo.

同样,

(+ 1 2 3)
Run Code Online (Sandbox Code Playgroud)

评估为6,而

'(+ 1 2 3)
Run Code Online (Sandbox Code Playgroud)

要么

(quote (+ 1 2 3))
Run Code Online (Sandbox Code Playgroud)

评估到包含四个元素的列表:符号+和数字1,2和3.特别是,+不评估.

同样,您的namemode,都在引用的基准范围内,不被视为标识符,而是视为符号.他们没有被评估.