¿Por qué el enlace afecta el tipo de mi mapa?
Estaba jugando en el REPL y tuve un comportamiento extraño:
Clojure 1.4.0
user=> (type {:a 1})
clojure.lang.PersistentArrayMap
user=> (def x {:a 1})
#'user/x
user=> (type x)
clojure.lang.PersistentHashMap
Pensé que todos los pequeños mapas literales eran ejemplos dePersistentArrayMap
, pero al parecer ese no es el caso si ha sido atado condef
. ¿Por qué usaríadef
¿Por qué Clojure elige una representación diferente para mi mapa pequeño? Sé que es probable que sea solo un extraño detalle de implementación, pero tengo curiosidad.