What is wrong with Hungarian notation? I use mX and vY for maps and vectors when they are not totally transparent and it does help. Of course you have no guarantee that your
(defn foo [mA]
(:foo mA))
will be passed a map in mA but at least you are drawing a boundary.
I'm not a big fan - once you start encoding type information in names, you have to be extremely attentive when refactoring. It doesn't scale too well in a larger team.
I prefer clojure.spec to guard significant (ns, api) boundaries.