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/10.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_Interpreter_Ffi - Fatal编程技术网

如何从Java调用Haskell

如何从Java调用Haskell,java,haskell,interpreter,ffi,Java,Haskell,Interpreter,Ffi,在有人指出之前,我已经看了这里的答案:我完全无法阅读这些答案 我在一个名为output.hs的文件中有一组Haskell函数。通常,为了执行这些函数,我会使用Hugs这样的解释器,并从它们的提示符输入命令 我想做的是从Java应用程序模拟该过程。我有一个JavaSwing文本字段,用户可以在Haskell中键入命令,我想做的是解释该命令,并在附近的文本区域显示输出。基本上,我是在为哈斯克尔的翻译做掩护 有人对此有直接经验吗?制作一个GHCi/Hugs流程,将输入发送给它,然后将stdout和st

在有人指出之前,我已经看了这里的答案:我完全无法阅读这些答案

我在一个名为output.hs的文件中有一组Haskell函数。通常,为了执行这些函数,我会使用Hugs这样的解释器,并从它们的提示符输入命令

我想做的是从Java应用程序模拟该过程。我有一个JavaSwing文本字段,用户可以在Haskell中键入命令,我想做的是解释该命令,并在附近的文本区域显示输出。基本上,我是在为哈斯克尔的翻译做掩护


有人对此有直接经验吗?

制作一个GHCi/Hugs流程,将输入发送给它,然后将stdout和stderr重定向到您的应用程序中如何?Java API已经具备了您需要的功能,例如

简单地公开函数不会给您解释Haskell的能力,仅仅通过库调用或服务公开这些函数实际上只是公开函数,而不是评估Haskell输入的能力

要评估Haskell输入,您可以编写自己的解释器,使用我认为不存在的现有解释器,或者选择我建议的最实用、最简单的选项:使用现有解释器并将其作为流程调用


我对这种方法有过一些经验,开始工作很简单,但要注意意外终止,然后自然地决定在发生这种情况时要做什么。如果这对于您的域来说太困难,您也可以考虑调用每个表达式的解释器,例如GHC-E 1 + 1将输出2。详见GHC手册第4.5.2节。这可能会更简单,但我只会将其用于不经常进行的评估,因为它会更慢,并且在快速输入时可能会很明显。

是否应该调用它,如何从java调用Haskell?是的,我想我是无意中换了标题。@MaxLipton你读不懂这些答案并不意味着它们没有回答问题。这只是意味着你需要学习更多来理解它们。另一个帖子的评论中链接的答案可能有用:我不知道从哪里开始学习。我希望有人能以一种不需要多个小时就能理解某些细节的方式回答这个问题。