Rich 在 CLJ-799 中提到:“print-dup 的目的是保持类型”
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
原因是由于 {{RT.map}} 条件性地在大小在 {{PersistentArrayMap.HASHTABLE_THRESHOLD}} 内时创建一个数组映射。