如何在Haskell/Java间进行互操作?我看过Meijer和Finne写的关于Lambada的论文。也有一个名为GCJNI的项目,但似乎已经无人维护了,其链接已经失效。是否有一些现成的解决方案可供使用?
使用 GHC FFI,您可以创建一个共享库,从Haskell环境中导出函数,然后Java可以通过JNA使用它。或者,您可以采用相同的共享库,并编写一些粘合代码,以通过JNI公开它,以获得更"Java-y"的接口。您还可以通过FFI将足够的JNI暴露给Haskell,以真正实现Java(这在Lambada论文中有点类似的方法)。我认为Haskell共享库+ JNA将是最简单,最容易的方法。这假设将某些Haskell函数公开给Java比将某些Java对象公开给Haskell更容易。如果您想了解向另一个方向发展的情况,可能会对Salsa感兴趣,它是C#而不是Java,但设计接口的原则可能会引起兴趣。
不算是互操作,但你可以使用HTTP REST或ZeroMQ。 http://www.zeromq.org/ haskell 绑定:http://www.zeromq.org/bindings:haskell