建立一個包含對的列表

方案中的列表只不過是在 conscdr 中相互巢狀的一系列對。正確列表的最後一個 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 中的列表是由對組成的連結串列。因此,將一個物件新增到列表的前面幾乎沒有時間,但是在列表末尾新增一個元素會強制直譯器遍歷整個列表。