2

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

4

1 回答 1

1

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

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

Rich Hickey 本人在此视频中讨论了基本结构及其优化

于 2013-10-03T22:56:55.930 回答