They Called It LISP for a Reason: List Processing(LISP 名字的由来:列表处理)

Lists play an important role in Lisp—for reasons both historical and practical. Historically, lists were Lisp’s original composite data type, though it has been decades since they were its only such data type. These days, a Common Lisp programmer is as likely to use a vector, a hash table, or a user-defined class or structure as to use a list.

无论是出于历史还是实践的的原因,列表在 Lisp 中都扮演着重要的角色。在历史上,列表曾经是 Lisp 最初的复合数据类型,尽管很多年从实践上来它是这方面唯一的数据类型。现在,Lisp 程序员可能会使用向量、哈希表、用户自定义的类或者结构体来代替列表。

Practically speaking, lists remain in the language because they’re an excellent solution to certain problems. One such problem—how to represent code as data in order to support code-transforming and code-generating macros—is particular to Lisp, which may explain why other languages don’t feel the lack of Lisp-style lists. More generally, lists are an excellent data structure for representing any kind of heterogeneous and/or hierarchical data. They’re also quite lightweight and support a functional style of programming that’s another important part of Lisp’s heritage.

从实践上来讲,由于列表对特定问题提供了极佳的解决方案,因此它们仍然能留在语言之中。其中有这样一个问题——如何将代码表示成数据从而支持代码转换和生成代码的宏,它就是特定于 Lisp 的,这就可以解释为什么其他语言没有感觉到因缺少 Lisp 式列表所带来的不便。更一般地讲,列表是用于表达任何异构和(或)层次数据的极佳数据结构。它们相当轻量并且支持函数式的编程风格,而这种编程风格也是 Lisp 传统的另一个重要方面。

Thus, you need to understand lists on their own terms; as you gain a better understanding of how lists work, you’ll be in a better position to appreciate when you should and shouldn’t use them.

因此,你需要更加深入地理解列表。一旦对列表的工作方式有了更加深刻的理解,你将会对如何适时地使用它们有更好的认识。