其他平台的Clojure实现?

时间:2011-10-28 22:24:44

标签: clojure

是否有为其他虚拟机(如.Net,Python,Ruby,Lua)构建Clojure的实现,还是它与Java和JVM的关系过于紧密?为其他平台构建Clojure是否有意义?

4 个答案:

答案 0 :(得分:5)

我目前有三种Clojure实现:

  • ClojureCLR,一个用于CLI的Clojure实现,
  • ClojureScript,(ECMAcript的Clojure的一个子集(变体)的一个实现)
  • Java平台的Clojure实现,令人困惑的也称为Clojure。

事实上,名称​​ Clojure 是由Rich Hickey专门选择的,因为它包含字母 CLR 以及字母 J

我听说有关Objective-C / Cocoa运行时,LLVM和Rubinius VM的实现的传言,但我不知道这些是否真的存在。

答案 1 :(得分:5)

" or is it too closely tied to Java and the JVM? 
  Does it make sense to build a Clojure for other platforms?"

Clojure设计理念之一是拥抱主机平台。 JVM上的Clojure包含了JVM,并且可以直接访问类,数字等。互操作是两种方式,不需要胶水。

ClojureScript以完全相同的方式包含JavaScript(ECMAScript),可以直接访问.NET目标的对象,数字等。

制作在多个平台上运行完全相同的源代码的“跨平台”语言很诱人,但并不总是成功。到目前为止,Clojure避免了这种诱惑,并努力与主人保持密切联系。

答案 2 :(得分:1)

Rich Hickey自己至少退出了一个ClojureCLR项目。

  

这个项目是Clojure在公共语言运行时(CLR)上的本机实现,   微软.Net Framework的执行引擎。

     

ClojureCLR是用C#(和Clojure本身)编程的,并且使用了Microsoft的   动态语言运行时(DLR)。

答案 3 :(得分:1)

我不确定Python和Ruby端口是否有意义,那些是具有多个虚拟机/实现的语言。如果你想在Clojure和Python或Ruby之间建立本地互操作,你可以使用Jython或JRuby并保留在JVM上。

相关问题