我正在寻找一种从Java程序中执行Haskell函数的有效方法.我已经考虑过使用exec()与GHC进行交互,但似乎应该有更好的方法.
我通常避免使用JNI类型的方法来跨运行时/语言进行链接.他们只有太多陷阱而且上涨空间很小.我发现跨越流程边界更容易.虽然我从未尝试过使用Haskell和Java,但它们都有支持XML RPC的库,这听起来很适合你正在做的事情.所以:将Haskell程序设置为"服务",并在需要时调用其功能.
我假设您知道如何从Java调用C语言?如果是这样,那么你可以按照FFI指南从C调用Haskell,从Java调用C,创建一个桥.这是本地调用,可能需要一些摆弄连接器.
有关从C调用Haskell的详细信息,请访问:http://www.haskell.org/haskellwiki/Calling_Haskell_from_C
或者,您可以考虑使用RPC服务器.