2012-05-26 51 views
21

source for clojure.core似乎假定fn*的前存在。這個定義在哪裏? bootstrap還需要什麼(通過現有的Java類型)?這是如何組合在一起的?什麼是fn *和Clojure bootstrap如何?

也許這已被問到?我很難獲得fn*的良好搜索結果。

更新:標題中將「bootstrap itself」更改爲「bootstrap」,因爲我不想暗示Clojure是自託管的。

回答

11

在SRC/JVM/Clojure的/郎/ Compiler.java 46行:

static final Symbol FN = Symbol.intern("fn*"); 

FN *由Clojure的編譯器實現,正如其他特殊形式,我猜。

更新: 在analyzeSeq方法,6452-6353線:

if(op.equals(FN)) 
     return FnExpr.parse(context, form, name); 

請查看FnExpr類實現代碼。