在 Common Lisp 中,它似乎()
是一种自我评估的形式。也就是说,它对自身(或其别名nil
)求值。所以似乎没有必要引用它。但是在我的 quicklisp 目录上使用 grep 会发现'()
许多不同的人在许多不同的项目中编写的实例。写出引用的版本是否有技术原因? Common Lisp the Lanugage, 2nd Edition , Section 1.2.2提到了风格上的差异,您可能想用 强调空列表,用 强调()
布尔值 false nil
,但没有涵盖这个问题。斯蒂尔使用的例子之一是:
(append '() '())
...我相信可以这样写:
(append () ())
...那为什么要把多余QUOTEs
的东西扔进去呢?当然它不会伤害事情。从风格上讲,一种形式通常比另一种形式更受欢迎吗?有人肯定会提出这样的情况,即引用的形式可以更简单地添加元素,以防你改变主意,并且真的想要一个非空的文字列表。或者使用引用有一定的对称性,因为非空文字列表也需要它。
这种历史包袱是从其他/更古老的相关语言中流传下来的吗?
这与 Scheme 不同,您确实需要引用它。而且似乎您不必在 elisp 中引用它,所以也许以一种迂回的方式,它可能与 lisp-1 与 lisp-2 有关?