2012-05-26 6 views
21

source for clojure.coreは、前もってfn*と仮定されているようです。これはどこに定義されていますか?ブートストラップに必要なものは何ですか(既存のJavaタイプを超えるもの)?それはどのようにまとめられていますか?fn *とは何ですか?Clojureはどのようにブートストラップしますか?

多分これは既に尋ねられましたか?私はfn*の良い検索結果を得るのに苦労しています。

更新:タイトルに「ブートストラップ自体」を「ブートストラップ」に変更しました。なぜなら、私はClojureが自己ホスティングしたことを暗示したくないからです。

答えて

11

のsrc/JVM/Clojureの/ LANG/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クラスをご覧ください。

関連する問題