_评论者: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互操作调用中的反射,因此似乎不希望将其作为错误。