2
某些陣列的操作,如set
,equals
和concat
將大大慢(大多爲O(n)),如果他們需要在存儲器結構完整拷貝。我知道像Clojure這樣的不可變語言使用一些技巧來避免這些操作的複雜性。這些技巧是什麼?不變的語言如何有效地實現set,concat,equals等等?
某些陣列的操作,如set
,equals
和concat
將大大慢(大多爲O(n)),如果他們需要在存儲器結構完整拷貝。我知道像Clojure這樣的不可變語言使用一些技巧來避免這些操作的複雜性。這些技巧是什麼?不變的語言如何有效地實現set,concat,equals等等?
由於持久數據結構的保證,「結構共享」在Clojure中使用。這意味着,舉例來說,如果您使用cons/conj添加到列表/矢量,則舊數據結構將在舊數據結構和新數據結構之間共享。
幕後的數據存儲在淺層樹高支因素。
豐富希基自己論述的基本結構及其優化in this video
並不是說這是一個DUP但看看答案的http://stackoverflow.com/questions/16270598/what-is-the- data-structure-behind-clojures-設置它有一些有趣的鏈接。 – Justin