source for clojure.core似乎假设fn*
已存在。这定义在哪里? bootstrap还需要什么(在现有的Java类型上)?这一切是如何组合在一起的?
也许这已经被问过了?我很难获得fn*
的良好搜索结果。
更新:在标题中将“bootstrap本身”更改为“bootstrap”,因为我不想暗示Clojure是自托管的。
答案 0 :(得分:12)
在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类实现代码。