Подтвердить что ты не робот

Что такое fn * и как работает Clojure bootstrap?

Источник источника для clojure.core, как предполагается, предполагает существование fn*. Где это определено? Что еще нужно для загрузки (поверх существующих типов Java)? Как все это вместе?

Возможно, это уже было задано? Мне трудно найти хорошие результаты поиска fn*.

update: изменил "сам bootstrap" на "bootstrap" в заголовке, потому что я не хотел подразумевать, что Clojure был самообслуживанием.

4b9b3361

Ответ 1

в src/jvm/ clojure/lang/Compiler.java 46 строка:

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

fn * реализует компилятор clojure, как и другие специальные формы, я думаю.

Update: в методе анализаSeq, строка 6452-6353:

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

ознакомьтесь с кодом реализации класса FnExpr.