什么是fn *以及Clojure如何引导?

时间:2012-05-26 15:03:41

标签: clojure bootstrapping

source for clojure.core似乎假设fn*已存在。这定义在哪里? bootstrap还需要什么(在现有的Java类型上)?这一切是如何组合在一起的?

也许这已经被问过了?我很难获得fn*的良好搜索结果。

更新:在标题中将“bootstrap本身”更改为“bootstrap”,因为我不想暗示Clojure是自托管的。

1 个答案:

答案 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类实现代码。