我是计划新手。我只是对以下两个列表的区别感到困惑。
(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
中的
如果您以图形方式绘制它们,它们将如下所示:
关于list - 方案中的两个列表有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495384/