list - 方案中的两个列表有什么区别

标签 list scheme

我是计划新手。我只是对以下两个列表的区别感到困惑。

(define a '(1 2))
(define a '(1 . 2))

我认为 a 等于 b,但是

(equal? a b)

把#f还给我。 任何帮助将不胜感激。

最佳答案

两者并不相同。第一个是普通列表。用点分法表示,它看起来像这样:

(1 . (2 . nil))

普通列表将数据存储在cons单元格的car中,而cdr仅用于存储指向下一个单元格的指针列表中的 cons 单元格,或列表中最后一个单元格为 Nil。

您对 a 的定义仅使用一个 cons 单元格,其中 1 位于 car 2 cdr 中的

如果您以图形方式绘制它们,它们将如下所示:

enter image description here

关于list - 方案中的两个列表有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495384/

相关文章:

scheme - Racket URL 调度

python - Python中SymbolType有什么用?

scheme - 如果文件名已在列表中,则将其删除

scheme - 在 Racket 中写负数

data-structures - 无限数据结构有哪些引人注目的用例?

python - 如何根据 Python 中连续元素的距离拆分数字列表?

html - 将文本与列表中下方的同一行对齐

java - 对字符串数组列表进行排序

java - 将 List<Product> 转换为 Map<Integer, List<Product>>

html - 如何让我的列表水平