_由 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 互操作调用中的反射,所以将它们变成错误似乎不佳。