2012-05-26 8 views
21

Wydaje się, że source for clojure.core stanowi wcześniejsze istnienie fn*. Gdzie to jest zdefiniowane? Co jeszcze jest potrzebne do bootstrapu (w porównaniu z istniejącymi typami Java)? Jak to wszystko razem?Co to jest fn * i jak działa bootstrap Clojure?

Może to już zostało zadane? Mam trudności z uzyskaniem dobrych wyników wyszukiwania dla fn*.

zmiana: Changed "bootstrap się" na "bootstrap" w tytule, bo nie chciałem się sugerować Clojure był self-hosting.

Odpowiedz

11

Src/JVM/clojure/język/Compiler.java 46 linii:

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

fn * clojure realizować przez kompilator, co innymi w specjalnej postaci, chyba.

Aktualizacja: w metodzie analyzeSeq, 6452-6353 linia:

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

proszę sprawdzić klasę FnExpr zaimplementować kod.