第一个clojure编译器?

第一个clojure编译器?,clojure,Clojure,Clojure主要是用Clojure编写的,但是必须有一个Clojure编译器的“第一”版本,它是用其他语言编写的,比如Java 该编译器的代码在任何地方都可用吗 我的兴趣纯粹是学术性的,不是生产性的,我想看看Rich Hickey处理鸡/蛋问题的方式。不确定这是否与你的兴趣有关,但Rich最初研究了一种称为DotLisp的语言,为此,他开始研究JScheme,他将其作为原始代码的基础,并最终将其完全替换 DotLisp在这里: JScheme在这里: (琐事:JScheme的作者之一是Bran

Clojure主要是用Clojure编写的,但是必须有一个Clojure编译器的“第一”版本,它是用其他语言编写的,比如Java

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


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

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

DotLisp在这里:

JScheme在这里:


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

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

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

然而,在Clojure的例子中,编译器是独立的,因此不需要复杂的游戏


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

这是对github的第一批提交之一。。。你可以从那里继续前进。从我最近听的演讲来看,Clojure的核心似乎仍然有大量Java代码。我还没有掌握源代码,但是如果这个核心只足以启动REPL/base操作,那么它上面的所有扩展都在Clojure引导下,我一点也不会感到惊讶。返回并制作一个完全Clojure编译器可能没有多大好处,因为在数据丢失的情况下,它会带来历史依赖关系。@BrianKnoblauch您应该获取源代码并查看一下。Clojure中使用的很多东西都只是java类。e、 g.关键词,原子。如果您对Java非常熟悉,那么查看源代码和理解这些东西的功能就变得非常容易了。。。也许有一天:)