创建一个包含对的列表
方案中的列表只不过是在 cons
的 cdr
中相互嵌套的一系列对。正确列表的最后一个 cdr
是空列表'()
。
要创建列表 (1 2 3 4)
,我们会有这样的事情:
(cons 4 '())
> (4)
(cons 3 (cons 4 '()))
> (3 4)
(cons 2 (cons 3 (cons 4 '())))
> (2 3 4)
(cons 1 (cons 2 (cons 3 (cons 4 '()))))
> (1 2 3 4)
如你所见,scheme 中的列表是由对组成的链表。因此,将一个对象添加到列表的前面几乎没有时间,但是在列表末尾添加一个元素会强制解释器遍历整个列表。