我有兴趣使用OCaml或Haskell开发统计计算引擎。该功能应该用于由模型驱动的面向对象的信息系统提供的数据。整个事情需要扩大规模。
我可以看到使用Haskell的很多好处,但是从Haskell代码中获取数据是很棘手的。总有开箱即用的选项,如C / C ++接口或JNI,但在一个应该扩展的架构中,我发现这些方法存在问题并且容易出错。
考虑到FP正在兴起,人们如何将这些语言集成到广泛使用的语言中,因此Java等技术?例如,我一直在使用ZeroMQ和Protocol Buffers进行Eiffel到Java集成,但有没有任何选项已被证明是稳定和高性能的?
Ps:Stackoverflow警告我这个问题似乎是主观的,但我问的是连接不同运行时的实际技术解决方案。我无意讨论任何语言或范例的利弊。
答案 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是一种有利于不变性的编程风格。