Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
clojure和scala互操作_Scala_Clojure - Fatal编程技术网

clojure和scala互操作

clojure和scala互操作,scala,clojure,Scala,Clojure,我很熟悉scala类/对象可以从clojure调用,因为scala编译成字节码,clojure对此很熟悉 然而,调用clojure函数和从scala导入名称空间是否无痛 我想混合使用优秀的lift框架和clojure,基本上从lift调用clojure代码。Scala中导入的语义基本上与Java相同。通过阅读如何从Java调用Clojure代码,然后在Scala中应用相同的原则,您应该能够获得所需的信息 如果您想编译Clojure代码并将其作为JAR包含在类路径中,那么这篇文章应该是相关的:

我很熟悉scala类/对象可以从clojure调用,因为scala编译成字节码,clojure对此很熟悉

然而,调用clojure函数和从scala导入名称空间是否无痛


我想混合使用优秀的lift框架和clojure,基本上从lift调用clojure代码。

Scala中导入的语义基本上与Java相同。通过阅读如何从Java调用Clojure代码,然后在Scala中应用相同的原则,您应该能够获得所需的信息

如果您想编译Clojure代码并将其作为JAR包含在类路径中,那么这篇文章应该是相关的:

如果您希望动态编译/解释.clj文件,则应阅读以下内容:


第一种选择对我来说似乎更好。

FWIW,我最近也有类似的经历。在clojure代码库中使用scala库并不总是直截了当的。如果库作者在设计api时将none-scala消费者牢记在心,那么集成可能是微不足道的。如果没有,您可能需要了解您试图使用的scala库生成的java接口的细节


我最近写了一篇关于这个主题的文档(),有一些clojure库为使用scala库提供了sugar语法。

+1,但我认为第二个选项确实值得考虑。这是一种更为“动态”的选择,如果您将Clojure用作一种嵌入式脚本语言,它将非常有用。它避免了预编译Clojure类的需要。在scala中使用
var
有一个小问题-您需要在它周围加上反标记。不久前,我需要interop并制作了这个包装器:我知道人们已经为JRuby Clojure和JRuby Scala编写了桥接器,如果没有人也编写了Clojure Scala,我会非常惊讶。