其他平台上的Clojure实现?

3

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

4个回答

6

我所知道的目前有三个Clojure实现:

  • ClojureCLR,针对CLI的一种Clojure实现,
  • ClojureScript,针对ECMAScript的(一个变体的)Clojure子集实现以及
  • 一种针对Java平台的Clojure实现,让人感到困惑的是也称为Clojure。

事实上,Rich Hickey特意选择了名称Clojure,因为它包含了字母CLR和字母J。

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


5
"或者它是否与Java和JVM过于紧密相关?构建适用于其他平台的Clojure是否有意义?"
Clojure的设计哲学之一是“拥抱主机平台”。Clojure在JVM上采用了JVM,直接访问类、数字等。interop是双向的,无需胶水。
ClojureScript以完全相同的方式采用JavaScript(ECMAScript),直接访问对象、数字等,对于.NET目标也是如此。
制作在多个平台上运行完全相同源代码的“跨平台”语言往往很诱人,但并不总是成功的。迄今为止,Clojure避免了这种诱惑,并努力保持接近主机。"

1

至少存在着一个 ClojureCLR 项目,由 Rich Hickey 亲自开发。

该项目是 Clojure 在 Microsoft .Net Framework 的 Common Language Runtime (CLR) 上的本地实现。

ClojureCLR 使用 C#(以及 Clojure 本身)进行编程,并利用了 Microsoft 的 Dynamic Language Runtime (DLR)。


1
我不确定Python和Ruby的移植是否有意义,因为它们是具有多个虚拟机/实现的语言。如果你想在Clojure和Python或Ruby之间进行本地互操作,可以使用Jython或JRuby并保持在JVM上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接