标签: erlang
在erlang中,一切都是不变的吗?那么如何将一个元素附加到列表头部不会创建列表的新副本,因为使用append每次都会创建一个新副本?
来自erlang.org的引用: 在递归和构建列表时,务必确保将新元素附加到列表的开头。通过这种方式,您将构建一个列表,而不是数百或数千个增长结果列表的副本。
每次没有追加到底的原因是不是遍历链表?
答案 0 :(得分:5)
Erlang对列表使用单个链表。添加头部不会修改尾部。想象一下,你有列表T = [10, 50, 40]。添加头部为[20 | T],结果如图所示。您可以看到[10, 50, 40]部分未被更改。
T = [10, 50, 40]
[20 | T]
[10, 50, 40]