Реализации Clojure для других платформ?

#clojure

#clojure

Вопрос:

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

Ответ №1:

В настоящее время существует три реализации Clojure, о которых я знаю:

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

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

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

Ответ №2:

" или это слишком тесно связано с Java и JVM? 
 Имеет ли смысл создавать Clojure для других платформ? "

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

ClojureScript точно так же использует JavaScript (ECMAScript), Предоставляя прямой доступ к объектам, числам и т. Д. то же самое для .ЧИСТАЯ цель.

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

Ответ №3:

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

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

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

Ответ №4:

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