list - 如何理解 lisp 中的列表(cons 结构)

标签 list lisp common-lisp

<分区>

我刚刚开始学习普通的 lisp。当我阅读集合和树一章时,我对列表的结构不太了解。现在我想知道列表中的内容到底是什么。我知道缺点包括两个值,它们可以是任何类型的对象。在这里,我通过谷歌找到了一张图片。 但我很困惑。它看起来像数据结构中的通用列表。 lists in lisp

最佳答案

列表是使用您提到的缺点单元构建的。第二部分为 nil 的单个 cons 单元格是最简单的列表:

(cons 'A nil)
=> (A)

如果你想扩展列表,你可以将另一个单元格连接到它:

(cons 'C (cons 'B (cons 'A nil)))
=> (C B A)

所以列表是一系列链接在一​​起的cons单元。

此外,为了让生活更轻松,还有 list 功能。这样你就不必编写所有那些 cons 调用并且可以像这样创建列表:

(list 'C 'B 'A)
=> (C B A)

但它内部仍然是一系列 cons 单元。

关于list - 如何理解 lisp 中的列表(cons 结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42499158/

相关文章:

functional-programming - Scheme 上是否有 "set!"的替代方案

lisp - 普通口齿不清 : Why does this function cause infinite recursion?

clojure - Clojure 中的并行绑定(bind)是什么意思

lisp - 普通口齿不清 : cons inside loop

string - 循环字符串中的字符,Common Lisp

lisp - List of List 麻烦 LISP

c# - 如何删除添加到列表中的最后一个元素?

java - 如何获取包含 JSONObject 的列表的大小?

asp.net - 使用循环将整数填充到下拉列表

java - 如何编写适用于列表和数组的方法?