and*_*oke 23 bootstrapping clojure
clojure.core的来源似乎假设已存在fn*
.这定义在哪里?bootstrap还需要什么(在现有的Java类型上)?它们是如何组合在一起的?
也许这已经被问到了?我很难获得良好的搜索结果fn*
.
更新:在标题中将"bootstrap本身"更改为"bootstrap",因为我不想暗示Clojure是自托管的.
num*_*_cn 12
在src/jvm/clojure/lang/Compiler.java中46行:
static final Symbol FN = Symbol.intern("fn*");
Run Code Online (Sandbox Code Playgroud)
fn*由clojure编译器实现,就像其他特殊形式一样,我想.
更新: 在analyzeSeq方法中,6452-6353行:
if(op.equals(FN))
return FnExpr.parse(context, form, name);
Run Code Online (Sandbox Code Playgroud)
请查看FnExpr类实现代码.