对符号求值时,它会被当作一个变量。如果该符号有值,结果就是这个变量的值;如果该符号作为变量没有值,Lisp 解释器就会报错。关于变量使用的更多信息,参见 变量。
在下面的例子中,我们用 setq 为一个符号赋值。然后对该符号求值,就会得到 setq 所存储的值。
(setq a 123)
⇒ 123
(eval 'a)
⇒ 123
a
⇒ 123
符号 nil 和 t 会被特殊对待:nil 的值永远是 nil,t 的值永远是 t;你不能对它们赋值或绑定为其他值。因此,这两个符号的行为类似于自求值形式,尽管 eval 把它们当作普通符号处理。名称以 ‘:’ 开头的符号同样会自求值;通常它们的值也不能被修改。See 永不改变的变量。