不可变语言如何有效地实现set,concat,equals等?

时间:2013-10-03 14:00:41

标签: algorithm optimization data-structures compiler-construction immutability

如果需要在内存上进行完整的结构复制,某些数组操作(例如setequalsconcat会相当慢(大多数为O(n))。我知道像Clojure这样的不可变语言会使用一些技巧来避免这些操作的复杂性。那些技巧是什么?

1 个答案:

答案 0 :(得分:1)

由于持久数据结构的保证,在Clojure中使用了“结构共享”。这意味着,例如,如果您使用cons / conj添加到列表/向量,则旧数据结构和旧数据结构将共享。

在幕后数据存储在具有高分支因子的浅树中。

Rich Hickey自己讨论了基本结构及其优化in this video