Я играл в REPL, и у меня было какое-то странное поведение:
Clojure 1.4.0
user=> (type {:a 1})
clojure.lang.PersistentArrayMap
user=> (def x {:a 1})
#'user/x
user=> (type x)
clojure.lang.PersistentHashMap
Я думал, что все маленькие литеральные карты являются экземплярами PersistentArrayMap
, но, видимо, это не так, если они связаны с def
. Почему использование def
заставляет Clojure выбирать другое представление для моей маленькой карты? Я знаю, что это, вероятно, просто какая-то странная деталь реализации, но мне любопытно.