我是函数式编程语言(即标准ML及其方言)的忠实粉丝,主要是因为它们的表现力允许非常简洁,干净的代码。我可以使用ML比使用Java更快地解决许多问题。
然而,Java在编程GUI( - > SWT)时非常棒。我绝对不想用功能语言来做这件事。
这给我们带来了一个实际问题:有没有一种很好的方法可以用ML编写程序然后用一个用Java编写的GUI包装它?
到目前为止,我想出的是:
有没有人有这方面的经验?有更好的方法吗?
提前致谢! -Steffen
答案 0 :(得分:1)
这不是确切的答案,但有一种功能语言非常适合JVM:Yeti
因此,如果你喜欢在ML中进行编码而不是目前关闭的编码,你可以使用JVM,它当然可以很好地集成到所有Java API中。
答案 1 :(得分:0)
有没有一种很好的方法可以用ML编写程序然后用一个用Java编写的GUI包装它?
我不知道这对于小型应用程序是否是一种好方法,但它绝对是一种适用于大型IDE风格的方式:Isabelle / ML vs.Isabelle / Scala / JVM。这是交互式定理证明的应用,但从某种意义上说,简单的SML编程就是一个简单的例子。
因此,您可以编写基本的Isabelle / ML代码,以旧式REPL的方式发出一些消息,但输出可以由JVM端的GUI组件解释。 Isabelle / jEdit经常为漂亮的彩色文本打印,只需要一点点富文本(子/上标和粗体)。
关于将管道/套接字上的函数值显式重新编码为字符串:在Isabelle / ML / Scala中非常简单,由于模仿SML在非类型化内存中表示类型值的方式,但在此使用非类型化XML树而不是位。 XML传输语法专门用于保持简单:YXML而不是官方的准人类可读XML。所有这些都符合约。 8000字节的SML源 - 我很想在这里发布源代码,但最好在网上搜索“Isabelle YXML”或“YXML PIDE”。
由于Scala / JVM本身已被提及作为独立替代方案:它绝对有效,Scala在模仿许多编程风格(高阶功能面向对象)方面也非常强大和灵活,但对于复杂的符号应用,如定理证明,它只是不会达到SML的纯度和稳定性。 (请注意,此处的基础SML平台是Poly / ML。)