6

Clojure 主要是用 Clojure 编写的,但必须有一个用其他东西(可能是 Java)编写的 clojure 编译器的“第一个”版本。

该编译器的代码在任何地方都可用吗?

我的兴趣纯粹是学术性的,而不是生产性的,我想看看 Rich Hickey 处理鸡/蛋问题的方式。

4

3 回答 3

10

clojure 编译器是用 java 编写的,而不是 clojure。因此,当前版本将满足您的好奇心。当然,说宏是编译器的一部分是一个合理的观点,并且这些确实是用clojure编写的,但是它们与您提到的鸡/蛋问题无关,这可以通过在Java中使用编译器来解决。

于 2012-10-09T17:38:19.883 回答
5

当您使用与正在编译的语言相同的语言编写编译器时,编译器引导是一个常见问题。

但是,对于 Clojure,编译器是用 Java 编写的,因此不需要复杂的游戏。

为了有趣的历史参考,Haskell 编译器(用 Haskell 编写)GHC 最初是通过Lazy ML编译的。

于 2012-10-09T18:03:01.330 回答
4

不确定这是否与您的兴趣有关,但 Rich 最初研究的是一种名为 DotLisp 的语言,为此他开始研究 JScheme,并将其用作原始代码的基础并最终完全替换。

DotLisp 在这里:http ://dotlisp.sourceforge.net/dotlisp.htm

JScheme 在这里:http: //jscheme.sourceforge.net/jscheme/main.html

(琐事:JScheme 的作者之一是 Brandeis 教授 Tim Hickey,与 Rich 没有任何关系。)

于 2012-10-09T15:43:26.213 回答