我是函数式编程语言的忠实粉丝(主要是标准ML及其方言),因为它们的表现力使得代码非常简洁干净,我可以用ML比Java更快地解决许多问题。
然而,当涉及到编写GUI(->SWT)时,Java确实非常棒。我绝对不会在函数式语言中进行这样的操作。
这引出了我的实际问题:有没有一种好的方法,可以使用ML编写程序,然后用Java编写的GUI进行包装? 到目前为止,我想到的是以下内容:
然而,当涉及到编写GUI(->SWT)时,Java确实非常棒。我绝对不会在函数式语言中进行这样的操作。
这引出了我的实际问题:有没有一种好的方法,可以使用ML编写程序,然后用Java编写的GUI进行包装? 到目前为止,我想到的是以下内容:
- 编译 ML 程序(例如使用 MLton 或 Poly ML),并将二进制文件作为外部程序从 Java 中执行
(http://www.rgagnon.com/javadetails/java-0014.html)。
问题:前端/后端之间唯一的通信方式是通过字符串。这可能需要大量的(困难的)编码/解码。 - 使用 JNI/JNA。根据我所读到的,这将允许您传输整数、数组等。我认为外部程序必须用 C/C++ 编写才能使其工作。使用 MLton 的 Foreign Function Interface,我可以在 C 中编写一个接口,将其与我的函数式程序静态链接起来。
问题:显然,这只适用于动态库,即在 Windows 中的 dll。然而,MLton 只允许我将 ML/C 程序编译成可执行文件。当尝试创建 dll 时,我会遇到一堆错误。
有人有经验吗?有更好的方法吗?
提前感谢!-Steffen
编辑:我知道Scala,它试图将函数式编程的概念引入Java。我尝试过它,但我认为它无法与实际的函数式编程语言竞争(就表达能力而言)。