2012-05-26 9 views
21

Il source for clojure.core sembra assumere la preesistenza di . Dove è definito? Cos'altro è necessario per il bootstrap (su tipi Java esistenti)? Come è tutto messo insieme?Che cos'è Fn * e come si avvia Clojure bootstrap?

Forse è già stato chiesto? Sto avendo difficoltà a ottenere buoni risultati di ricerca per fn*.

aggiornamento: Modificato "bootstrap in sé" su "bootstrap" nel titolo, perché non volevo implicare che Clojure fosse self-hosting.

risposta

11

in src/JVM/clojure/lang/Compiler.java 46 Linea:

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

fn * attuare entro il compilatore Clojure, come altri forma speciale, immagino.

Aggiornamento: nel metodo analyzeSeq, 6.452-6.353 linea:

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

si prega di check out classe FnExpr implementare il codice.