Вопрос

Я ищу руководство по полиглотному программированию на этих двух языках.

я знаю это взаимодействие между ними возможно, поскольку они оба работают на одной виртуальной машине Java и оба скомпилированы в один и тот же байт-код.Но есть некоторые неудобства:

  • Могу ли я использовать скомпилировать код Clojure?
  • Могу ли я использовать скомпилировать код Scala?

(Да, да, я знаю, что могу просто подключить jar от одного языка к проекту в другом Ланге.)

  • Есть ли какие-нибудь библиотеки, которые могли бы избавить меня от написания код межполучия?
  • и так далее

Итак, вопрос в том, Как настроить полиглотную разработку в Scala и Clojure?

Это было полезно?

Решение

Я не использовал его, но Leinhen имеет a jref="http://github.com/technomancy/lein-scalac" rel="noreferrer"> Поддержка SCALAC .

Другие советы

Короткий Anser: Используйте Maven3

Maven3 с Zi плагин для Clojure и Maven-Scala-Plugin позволит вам иметь хороший интегрированный проект Polyglot, где вы можетеИспользуйте любой язык, который вы хотите, если его Java;)

Одним из больших изменений в MAVEN3 был нажатой к программированию Polyglot JVM, включая возможность писать POMS на многих языках.Вы потеряете польский Лейнинген при возникновении этого маршрута, хотя вы получаете много в ответ.

Лично я держусь подальше от использования Maven непосредственно, несмотря на то, что он принял ответ. Вот простое определение проекта Leinhen, которое:

    .
  • генерирует источники Java от грамматики ANTLR4 (как бонус);
  • компилирует java-источники;
  • компилирует Scala источники (я предпочитаю использовать Scala поверх генерируемого ANTLR4 Java-кода, поскольку это гораздо более лаконично и приятно работать);
  • продолжается с вещей Clojure.
(defproject polyglot "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :plugins [[lein-antlr4 "0.1.0-SNAPSHOT"]
            [lein-scalac "0.1.0"]]
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [org.antlr/antlr4 "4.0"]
                 [org.scala-lang/scala-library "2.10.1"]]
  :warn-on-reflection true
  :antlr4-source-paths ["antlr4"]
  :antlr4-options {:package "parser" :listener true}
  :antlr4-compile-path "target/antlr4/parser"
  :java-source-paths ["target/antlr4/parser" "src/java"]
  :scala-source-path "src/scala"
  :prep-tasks ["antlr4" "javac" "scalac" "compile"])
.

Чтобы использовать плагин ANTLR4 и «yein install of the any-antlr4 плагин. Если вам это не нужно, просто удалите соответствующие строки из определения проекта.

Чтобы использовать плагин Scala, который мне нужно для Скачать и изменить

[org.scala-lang/scala-compiler "2.9.1"] 
.

к

[org.scala-lang/scala-compiler "2.10.1"]
.

в plugin's Project.clj, то 'Lein Установите его локально. С более старой версией зависимости я получал

java.lang.Error: typeConstructor inapplicable for <none>
.

из Scala Compiler.

как maven альтернатива: RODLE умеет компилировать оба языка.

Скала Dynamic Эта черта была создана для облегчения интеграции с динамически типизированными языками, но вам придется написать свой собственный сервер пересылки.Кроме того, вам придется переписать его с помощью Scala 2.10, поскольку он был немного изменен.Возможно, на самом деле вам стоит использовать Scala 2.10 (доступна веха 2).Поддержка CAT Scala 2.10 также может помочь вам с интеграцией на стороне Scala.

Ты может используйте SBT для компиляции Clojure, поскольку SBT очень гибок, но, что более прагматично, поддержка компиляции Clojure отсутствует.Вы можете посмотреть этот плагин как пример того, как добавить компиляцию других языков.

Мне кажется любопытным, что между Scala и Clojure существует так мало интеграции.Их часто сравнивают, и вы часто увидите, как люди говорят, что предпочитают одно другому.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top