Что такое fn * и как работает Clojure bootstrap?
Источник источника для clojure.core, как предполагается, предполагает существование fn*
. Где это определено? Что еще нужно для загрузки (поверх существующих типов Java)? Как все это вместе?
Возможно, это уже было задано? Мне трудно найти хорошие результаты поиска fn*
.
update: изменил "сам bootstrap" на "bootstrap" в заголовке, потому что я не хотел подразумевать, что Clojure был самообслуживанием.
Ответы
Ответ 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.