2011-10-28 4 views
3

다른 가상 머신 (예 : .Net, Python, Ruby, Lua) 용으로 빌드 된 Clojure 구현이 있습니까? 아니면 Java 및 JVM과 너무 밀접하게 연관되어 있습니까? 다른 플랫폼 용 Clojure를 만드는 것이 합리적입니까?다른 플랫폼 용 Clojure 구현?

답변

1

Rich Hickey 자신이 만든 프로젝트가 적어도 ClojureCLR 개 있습니다.

이 프로젝트는 공용 언어 런타임 (CLR), 마이크로 소프트의 닷넷 프레임 워크의 실행 엔진에 Clojure에서의 기본 구현입니다.

ClojureCLR은 C# (및 Clojure 자체)로 프로그래밍되었으며 Microsoft의 동적 언어 런타임 (DLR)을 사용합니다. 내가 아는 Clojure의 세 가지 구현는 현재

5

:

  • ClojureCLR의 CLI에 대한 Clojure의 구현,
  • ClojureScript의 구현 (의 (변형의 하위 집합)) Clojure for ECMAScript 및
  • Java 플랫폼 용 Clojure 구현, 혼동스럽게 Clojure라고도 함. 이 두 글자를 CLR뿐만 아니라 문자 J을 포함하기 때문에 사실

, 이름 Clojure의는 특히 리치 키스 마크를 선택했습니다.

Objective-C/Cocoa 런타임, LLVM 및 Rubinius VM에 대한 구현 소문을 들었지만 실제로 존재하는지 여부는 알 수 없습니다.

1

파이썬과 루비 포트가 이해할 수 있을지 모르겠다. 가상 머신/구현이 여러 개인 언어이다. Clojure와 Python 또는 Ruby 사이에 네이티브 interop을 원한다면 Jython이나 JRuby를 사용할 수 있고 JVM을 유지할 수 있습니다. Clojure의 디자인 철학

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

하나는 호스트 플랫폼을 수용 입니다. JVM의 Clojure는 JVM을 채택하고 클래스, 숫자 등에 직접 액세스 할 수 있습니다. interop은 접착제를 사용하는 두 가지 방법입니다.

ClojureScript는 똑같은 방법으로 JavaScript (ECMAScript)를 채택하여 .NET 대상에 대해 객체, 숫자 등을 직접 액세스 할 수 있습니다.

여러 플랫폼에서 똑같은 소스 코드를 실행하는 '크로스 플랫폼'언어를 만드는 것이 유혹스러운 일이지만 항상 성공하지는 않습니다. 지금까지 Clojure는이 유혹을 피하고 호스트와 가까이 있기 위해 노력했습니다.

관련 문제