2

某些陣列的操作,如setequalsconcat將大大慢(大多爲O(n)),如果他們需要在存儲器結構完整拷貝。我知道像Clojure這樣的不可變語言使用一些技巧來避免這些操作的複雜性。這些技巧是什麼?不變的語言如何有效地實現set,concat,equals等等?

+0

並不是說這是一個DUP但看看答案的http://stackoverflow.com/questions/16270598/what-is-the- data-structure-behind-clojures-設置它有一些有趣的鏈接。 – Justin

回答

1

由於持久數據結構的保證,「結構共享」在Clojure中使用。這意味着,舉例來說,如果您使用cons/conj添加到列表/矢量,則舊數據結構將在舊數據結構和新數據結構之間共享。

幕後的數據存儲在淺層樹高支因素。

豐富希基自己論述的基本結構及其優化in this video