5 clojure
Clojure主要是用Clojure编写的,但是必须有一个"第一"版本的clojure编译器,用其他东西编写,可能是Java.
该编译器的代码可以在任何地方使用吗?
我的兴趣纯粹是学术性的,而不是生产性的,我想看看Rich Hickey处理鸡/蛋问题的方式.
clojure编译器是用java编写的,而不是用clojure编写的.因此,当前版本将满足您的好奇心.当然,说宏是编译器的一部分是合理的观点,并且那些确实是用clojure编写的,但它们与你提到的鸡/蛋问题无关,这可以通过在Java中使用编译器来解决.
当您使用与您正在编译的语言相同的语言编写编译器时,编译器引导是一个常见问题。
然而,在 Clojure 的情况下,编译器是用 Java 编写的,因此不需要复杂的游戏。
对于有趣的历史参考,GHC,Haskell 编译器(用 Haskell 编写)最初是通过Lazy ML编译的。
不确定这是否与您的兴趣有关,但 Rich 最初致力于一种名为 DotLisp 的语言,为此他从研究 JScheme 开始,他将其用作原始代码的基础并最终完全替换。
DotLisp 在这里: http: //dotlisp.sourceforge.net/dotlisp.htm
JScheme 在这里:http://jscheme.sourceforge.net/jscheme/main.html
(冷知识:JScheme 的作者之一是布兰迪斯大学教授 Tim Hickey,与 Rich 没有已知的关系。)