如何将函数式编程语言集成到Java或C#中?

时间:2011-08-15 09:21:46

标签: java functional-programming integration scalability

我有兴趣使用OCaml或Haskell开发统计计算引擎。该功能应该用于由模型驱动的面向对象的信息系统提供的数据。整个事情需要扩大规模。

我可以看到使用Haskell的很多好处,但是从Haskell代码中获取数据是很棘手的。总有开箱即用的选项,如C / C ++接口或JNI,但在一个应该扩展的架构中,我发现这些方法存在问题并且容易出错。

考虑到FP正在兴起,人们如何将这些语言集成到广泛使用的语言中,因此Java等技术?例如,我一直在使用ZeroMQ和Protocol Buffers进行Eiffel到Java集成,但有没有任何选项已被证明是稳定和高性能的?

Ps:Stackoverflow警告我这个问题似乎是主观的,但我问的是连接不同运行时的实际技术解决方案。我无意讨论任何语言或范例的利弊。

4 个答案:

答案 0 :(得分:5)

你考虑过使用Scala吗?它支持JVM平台上的函数编程。您可以将它与Java集成,但您可能会发现不需要它。

您可能还会发现它比Haskell更快,尤其是与Java更紧密地集成。

http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.html

答案 1 :(得分:3)

F#将为您提供.Net平台的“免费”功能编程。

OcamlJava可以将Java与Ocaml连接:

  

OCaml-Java致力于在Java平台上提供Objective Caml,目前支持3.11.2。该项目有两个具体目标:第一,运行使用ocamlc编译的Objective Caml源的能力;第二,将Objective Caml源编译成可执行jar文件的能力。

答案 2 :(得分:1)

您使用Scala等语言,即已在JVM上运行的语言。

有很多函数式语言在JVM上运行,因此可以很好地与其他java代码集成。

我最喜欢的是Scala,但也有Clojure和Groovy,仅举几例。

答案 3 :(得分:1)

正如其他人所说,使用Scala或F#将是真正的解决方案,但是如果你喜欢更容易入手的话,你也可以像Java({3}}那样用Java(或C#)进行一些函数式编程。因为FP是一种有利于不变性的编程风格