Scala和Clojure在一个项目中
-
12-12-2019 - |
题
我正在寻找这两种语言的Polyglot编程指南。
我知道它们之间的互操作是可能的,因为它们都在同一Java VM上运行,两者都被编译为相同的字节码。 但有一些苦难:
( 是的,是的,我知道我可以从一种语言插入jar,在其他郎。)
- 是有一些图书馆可以从写作
解决方案
我没用过它,但leinineen确实有 scalac支持。
其他提示
短ANSER:使用maven3
maven3与 zi maven-scala-plugin 将允许您拥有一个很好的集成多格项目,您可以在那里只要其java使用您想要的任何语言;)
Maven3的一个大变化是推动Polyglot JVM编程,包括在许多语言中编写POM的能力。在进行这条路线时,你会松开leinineen的波兰语,虽然你得到了充足的回报。
个人,尽管是被接受的答案,我会远离使用Maven。这是简单的leinineen项目定义:
- 从Antlr4语法(作为奖励)生成Java来源;
- 编译Java源;
- 编译scala源(我更喜欢在生成的antlr4 java代码的顶部使用scala,因为它更简洁,令人愉悦);
- 继续与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插件下载和'lein安装' lein-antlr4 插件。如果您不需要它,只需删除项目定义中的相关行。
要使用Scala插件,我需要下载它并更改[org.scala-lang/scala-compiler "2.9.1"]
.
[org.scala-lang/scala-compiler "2.10.1"]
.
在plugin的project.clj中,然后'lein安装'它在本地。较旧的依赖版本我得到
java.lang.Error: typeConstructor inapplicable for <none>
.
从scala编译器。
作为maven替代: gradle 能够编译两种语言。
Scala的Dynamic
特征是创建的,以便以动态类型的语言更轻松地集成,但您必须编写自己的转发器。此外,您必须使用Scala 2.10重写它,因为它已被更改了一下。也许,事实上,您应该使用Scala 2.10(可用的里程碑2)。Scala 2.10 CAT支持也可以帮助您在Scala侧面集成。
you can 使用SBT编译Clojure,因为SBT非常灵活,但更务实地,没有Clojure-Compilation支持,可以随时可用。你可以看看这个插件作为如何添加其他语言的编辑的示例。
我发现很好,即Scala和Clojure之间的一点似乎存在。他们经常比较,你经常看到人们说它选择一个。