【问题标题】:How do you integrate functional programming languages to Java or C#? [closed]如何将函数式编程语言集成到 Java 或 C#? [关闭]
【发布时间】:2011-10-27 03:54:26
【问题描述】:

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

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

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

Ps:Stackoverflow 警告我这个问题看起来很主观,但我问的是连接不同运行时的实际技术解决方案。我无意讨论任何语言或范式的优缺点。

【问题讨论】:

  • 我怀疑系统认为这似乎是主观的,因为它包含短语“Java or C#”;-)
  • 是的,这也是我的猜测。我提到的信息系统包含 Java 和 C# 的部分,所以我必须在问题中包含这两种语言。
  • 对于 Java:您使用 Scala? ;) 毕竟它与 Java 兼容...
  • 尝试 F# 和/或使用纯文本(但不是 XML!)协议在两个世界之间序列化您的数据。
  • 您可能会发现这个 [Integrating Haskell with .Net][1] 也很有趣 [1]:stackoverflow.com/questions/4111467/…

标签: java functional-programming integration scalability


【解决方案1】:

正如其他人所说,使用 Scala 或 F# 将是真正的解决方案,但如果你喜欢更容易开始的东西,你也可以像这些人 https://www.google.com/search?q=functional+programming+java as FP 那样用 Java(或 C#)做一些函数式编程是一种支持不变性的编程风格

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我考虑过 Scala,这将是一个可以接受的解决方案。但是,我一直在阅读有关 Haskell 的信息,如果可以的话,我倾向于使用它。如果除了“使用 Scala”之外我找不到其他答案,我会将您的回答标记为正确答案,并提出一个更具体的问题,关于集成 Java/C# 和 Haskell。
    【解决方案3】:

    您使用 Scala 等语言,即已经在 J​​VM 上运行的语言。

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

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

    【讨论】:

      【解决方案4】:

      F# 将为您提供“免费”.Net 平台的函数式编程。

      OcamlJava 可以将 Java 与 Ocaml 接口:

      OCaml-Java 旨在使 Objective Caml 在 Java 平台上可用,目前支持 3.11.2。该项目有两个具体目标:首先,能够运行使用 ocamlc 编译的 Objective Caml 源代码;其次,能够将Objective Caml 源代码编译成可执行的jar 文件。

      【讨论】:

        猜你喜欢
        • 2010-12-06
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        • 2011-09-23
        • 2012-07-14
        • 2017-07-18
        • 1970-01-01
        相关资源
        最近更新 更多