我已經在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之外的其他東西時,則會生成其他表單。 –