_Comment made by: jafingerhut_
One can type hint a primitive value on a Var naming a function, or any value one wants, like so:
(def {:tag 'long} foo 17)
(defn {:tag 'double} bar [x y]
(* 2.0 x y))
I think it is odd that one must use {:tag 'long} instead of ^long, since trying to use ^long ends up giving the useless type hint that is the value of the function clojure.core/long.
However, the Clojure compiler will use the primitive type hints as shown in the examples above to avoid reflection in appropriate Java interop calls, so making them an error seems undesirable.