3
下面的解釋是assoc
代碼:assoc命令Clojure中:的內部
(def assoc
(fn assoc
([map key val] (. clojure.lang.RT (assoc map key val)))))
什麼是
clojure.lang.RT
意思?向量/地圖上調用
assoc
的複雜性是什麼?訪問由
assoc
創建的結構的複雜性是什麼?
下面的解釋是assoc
代碼:assoc命令Clojure中:的內部
(def assoc
(fn assoc
([map key val] (. clojure.lang.RT (assoc map key val)))))
什麼是clojure.lang.RT
意思?
向量/地圖上調用assoc
的複雜性是什麼?
訪問由assoc
創建的結構的複雜性是什麼?
clojure.lang.RT
是主要的Clojure運行時類。它擁有構成語言核心的大部分方法。
assoc
對於包括向量和映射的所有關聯數據結構都是O(1)。 array-map
開始爲前幾項線性,然後提升自己爲hash-map
所以它也是O(1)。如果需要的話,你當然可以用不是O(1)的東西來實現關聯接口。
從技術上講,通過在另一個地圖上調用assoc
創建的地圖或矢量中的項目的訪問時間爲O(log32 N)。因爲這些數據結構有一個上限的〜2^32個項目的大小這留下6其中有效恆定時間的最大樹深度
Clojure的締數據結構都是O(n日誌n)的在空間(因爲它們是樹)。
我想了解'assoc'如何在地圖上工作,當它必須修改現有的條目?你知道我在哪裏可以找到材料嗎? – viebel
http://blip.tv/clojure/clojure-data-structures-part-1-714056 –
和這一個http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey(具體來說20分鐘進入它) –