Per Rich in CLJ-799: "The point of print-dup is type preservation"
user=> (hash-map :k :v)
{:k :v}
user=> (type *1)
clojure.lang.PersistentHashMap
user=> (binding [*print-dup* true] (print-str *2))
"{:k :v}"
user=> (read-string *1)
{:k :v}
user=> (type *1)
clojure.lang.PersistentArrayMap
The cause is due to {{RT.map}} conditionally creating an array-map if the size is within the {{PersistentArrayMap.HASHTABLE_THRESHOLD}}.