Реализации Clojure для других платформ? - PullRequest
3 голосов
/ 29 октября 2011

Существуют ли реализации Clojure для других виртуальных машин (таких как .Net, Python, Ruby, Lua) или они слишком тесно связаны с Java и JVM?Имеет ли смысл создавать Clojure для других платформ?

Ответы [ 4 ]

5 голосов
/ 29 октября 2011
" or is it too closely tied to Java and the JVM? 
  Does it make sense to build a Clojure for other platforms?"

Одной из философий дизайна Clojure является охват хост-платформы . Clojure на JVM охватывает JVM и дает прямой доступ к классам, числам и т. Д. Взаимодействие в обоих направлениях без клея.

ClojureScript охватывает JavaScript (ECMAScript) точно таким же образом, предоставляя прямой доступ к объектам, числам и т. Д. Таким же образом для цели .NET.

Заманчиво, но не всегда успешно, создавать «кроссплатформенные» языки, которые запускают один и тот же исходный код на нескольких платформах. До сих пор Clojure избегал этого искушения и стремится оставаться рядом с хозяином.

5 голосов
/ 29 октября 2011

В настоящее время мне известны три реализации Clojure:

  • ClojureCLR, реализация Clojure для CLI,
  • ClojureScript, реализация (подмножество (вариант)) Clojure для ECMAScript и
  • реализация Clojure для платформы Java, которая также вызывающе называется Clojure.

На самом деле имя Clojure былоспециально выбран Rich Hickey, потому что он содержал как буквы CLR , так и буквы J .

Я слышал слухи о реализации Objective-C /Время выполнения какао, LLVM и виртуальная машина Rubinius, но я понятия не имею, существуют ли они на самом деле.

1 голос
/ 29 октября 2011

Я не уверен, что порты Python и Ruby имеют смысл, это языки с несколькими виртуальными машинами / реализациями. Если вы хотите иметь встроенное взаимодействие между Clojure и Python или Ruby, вы можете использовать Jython или JRuby и остаться на JVM.

1 голос
/ 29 октября 2011

Выходит как минимум проект ClojureCLR самого Рича Хики.

Этот проект является нативной реализацией Clojure в Common Language Runtime (CLR), механизм исполнения Microsoft .Net Framework.

ClojureCLR запрограммирован на C # (и сам Clojure) и использует Microsoft Динамическая языковая среда выполнения (DLR).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...