_由:jafingerhut_发表的评论
可以在为函数命名的 Var 上或任何想要的地方对原始值进行类型提示,如下所示
(def {:tag 'long} foo 17)
(defn {:tag 'double} bar [x y]
(* 2.0 x y))
我认为必须使用 {:tag 'long} 而不是 ^long 是很奇怪的,因为尝试使用 ^long 最终得到的是一个无用的类型提示,它是 clojure.core/long 函数的值。
然而,Clojure 编译器将使用如上所示的原始类型提示来避免适当的 Java 交互调用中的反射,因此将它们视为错误似乎是不理想的。