我已经在Clojure core.clj
源代码中看到了很多功能上的^:static
元数据,例如,在seq?
定义:“^:static”在Clojure中做了什么?
(def
^{:arglists '([x])
:doc "Return true if x implements ISeq"
:added "1.0"
:static true}
seq? (fn ^:static seq? [x] (instance? clojure.lang.ISeq x)))
正是这是否元做什么,以及为什么它在整个core.clj
使用如此频繁?
当你说*全自动*,你的意思是在最近的clojure编译器版本产生双胞胎,并执行这样的优化*为每个功能*无论标记为^静态或不是? –
当类型注释导致编译器确定某个函数可以产生除Object之外的其他东西时,则会生成其他表单。 –