|
|
1
21
函数式语言中的列表是不可变/持久的。
将节点添加到列表末尾需要修改最后一个节点以指向新创建的节点。只有这是不可能的,因为节点是不可变的。唯一的选择是创建一个新节点,该节点与最后一个节点具有相同的值,并指向新创建的尾部。这个过程必须一直重复到列表的前面,从而产生一个全新的列表,该列表是第一个列表的副本,但尾部节点除外。因此更贵。 |
|
|
2
5
|
|
|
3
2
因为它更快
|
|
|
4
2
这就是列表的定义方式。列表是 |
|
|
5
1
通过将列表构造限制为前缀,这意味着任何其他持有对列表某个部分的引用的人,都不会看到它在背后发生意外的变化。这允许高效的列表构造,同时保留不可变数据的属性。 |