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