Haskell Java 互操作性

14

如何在Haskell/Java间进行互操作?我看过Meijer和Finne写的关于Lambada的论文。也有一个名为GCJNI的项目,但似乎已经无人维护了,其链接已经失效。是否有一些现成的解决方案可供使用?


2
相关:https://dev59.com/4HI95IYBdhLWcg3wzhZ9 https://dev59.com/02sz5IYBdhLWcg3wWmUy https://dev59.com/_lTTa4cB1Zd3GeqPrEs4 - Mauricio Scheffer
1
不完全是 Haskell,但几乎相似 - http://code.google.com/p/frege - 并且它可以编译成 Java。 - Ingo
2个回答

12
使用 GHC FFI,您可以创建一个共享库,从Haskell环境中导出函数,然后Java可以通过JNA使用它。或者,您可以采用相同的共享库,并编写一些粘合代码,以通过JNI公开它,以获得更"Java-y"的接口。您还可以通过FFI将足够的JNI暴露给Haskell,以真正实现Java(这在Lambada论文中有点类似的方法)。
我认为Haskell共享库+ JNA将是最简单,最容易的方法。这假设将某些Haskell函数公开给Java比将某些Java对象公开给Haskell更容易。如果您想了解向另一个方向发展的情况,可能会对Salsa感兴趣,它是C#而不是Java,但设计接口的原则可能会引起兴趣。

2
真正困难的部分是从Java代码自动化生成Haskell接口。在这方面有任何进展吗? - Bartosz Milewski

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接