Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Java运行haskell函数_Java_Haskell - Fatal编程技术网

如何通过Java运行haskell函数

如何通过Java运行haskell函数,java,haskell,Java,Haskell,假设我在math.hs中有一个haskell函数add 如何通过Java程序运行add函数并将输出存储为变量 可能是以下情况: public int runHaskell(String haskellFile) { int output; //run add function from file 'math.hs' and store result to output return output; } (如果需要,我还可以访问对象文件:math.o和解释器文件math.

假设我在math.hs中有一个haskell函数add

如何通过Java程序运行add函数并将输出存储为变量

可能是以下情况:

public int runHaskell(String haskellFile) {
    int output;
    //run add function from file 'math.hs' and store result to output
    return output;
}
(如果需要,我还可以访问对象文件:math.o和解释器文件math.hi以及可执行main.exe。)

简单(但笨拙)的方法:

然后您可以监听Haskell程序的输出,然后解析它以获得结果


P> >你可以为JNI写一个小包装,直接调用你的Haskell。

< p>你可以使用一些RPC框架,例如,支持C++、java、python、php、Ruby、erlang、perl、Haskell、Cype、COCOA、SimalTalk和OcAML。
还有,但我不确定是否存在Java端口。

这可能会有所帮助:。还有一种方法可以在JVM下运行您的整个源代码,使您能够轻松地进行交互。

这可能涉及JNI的一些巧妙技巧。我很想知道答案是什么。@templatetypedef我看不出这与将JNI与C结合使用有什么不同(GHC可以生成中间C代码)@Rafe Ketterr-是的,但是JNI要求的命名约定以及所有参数必须是特定类型的事实可能需要您构建一个“蹦床”如果你只需要一小部分Haskell代码,你可以考虑把它翻译成Jaskell()H.M.在我执行可执行的Haskell程序之后,我如何收听输出?@ Nick:<代码> Exc> <代码>返回<代码>进程< /Cord>对象,您可以使用它来获取进程将其输出写入的流。