为什么没有列表构建相反的方式并让它们附加元素?

时间:2016-05-03 14:25:54

标签: scala language-design

因为在Scala列表中实际构建的是(此处为List(1,2,3)),所以:

[ 1 , [ 2, [ 3 , Nill ] ] ]          // (pseudo-code) 

假装新元素更有效,这就是为什么::是正确关联的(所有在https://stackoverflow.com/a/1162980/4533188中解释) - 为了更好的可读性(这里1 :: 2 :: 3)。这回答了我的问题,为什么首先要有正确的关联是好的。但是为什么Lists的设计者不会像

那样简单地构建它们
[ Nill , [ 3, [ 2 , 1 ] ] ]          // (pseudo-code)

内部并使用传统的左联想?

这里的图形是我的伪代码的意思(因为它没有显示链表的“链接”):

enter image description here

1 个答案:

答案 0 :(得分:2)

因为附加列表不是不可变的(或者你必须在每次更改时完整地复制它)。

请参阅https://en.wikipedia.org/wiki/Linked_list了解。