Я смотрю в исходный код clojure. Реализация PersistentArrayMap
имеет это условие в функции assoc
:
if(array.length >= HASHTABLE_THRESHOLD)
return createHT(array).assoc(key, val);
Где HASHTABLE_THRESHOLD
равно 16. Таким образом, Assoc должен вернуть PersistentHashMap
, если массив массивов уже имеет 8 пар. Теперь посмотрите на этот код clojure:
(defn create [n, init] (if (= n 0) init (recur (dec n) (assoc init n n))))
(type (create 9 {}))
Вывод clojure.lang.PersistentArrayMap
, не должен ли он быть PersistentHashMap
? Что я получу, если использую 10 вместо 9.