Clojureにはread/write invarianceはない?

sorted-setをwriteしてreadしたらhash-setになる?

user=> (def hs (hash-set :a :b :c :d))
#'user/hs
user=> (def ss (sorted-set :a :b :c :d))
#'user/ss
user=> (def s (read-string (pr-str ss)))
#'user/s
user=> hs
#{:a :c :b :d}
user=> ss
#{:a :b :c :d}
user=> s
#{:a :c :b :d}
user=> (sorted? hs)
false
user=> (sorted? ss)
true
user=> (sorted? s)
false

sortedであるという情報が抜け落ちてしまっている.Clojureにはread/write invarianceはない,ということ?
あと=の比較が型から独立している?なので

user=> (= '(a b c) '[a b c])
true

型を含めた比較や同一性の検査がしたいときはどうするんだろう.