是否有为其他虚拟机(如.Net,Python,Ruby,Lua)构建Clojure的实现,还是它与Java和JVM的关系过于紧密?为其他平台构建Clojure是否有意义?
答案 0 :(得分:5)
我目前有三种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上。