clojure序列类型

gat*_*ado 5 static-typing clojure typechecking

什么是正确的序列类型?我有这个代码:

(defrecord MethodInfo [^clojure.lang.ISeq preconds ^clojure.lang.ISeq postconds])
Run Code Online (Sandbox Code Playgroud)

但它似乎没有正确执行类型要求,因为我可以写(new MethodInfo 1 2).

Sco*_*ott 7

我的理解是,Clojure的类型提示只是出于性能原因,通过侧步反射来改进方法查找; 这是他们唯一的目的,而不是在动态语言中强制执行静态类型.

请查看类似问题的答案.

编辑:

在Clojure 1.3中有一些关于能够强制执行原始返回类型的说法,但这显然是不可避免的,但仍不适用于序列类型.