Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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进程out Runtime.getRuntime.exec()?互动交流?_Java_Haskell_Communication_Interactive - Fatal编程技术网

Java 如何启动Haskell进程out Runtime.getRuntime.exec()?互动交流?

Java 如何启动Haskell进程out Runtime.getRuntime.exec()?互动交流?,java,haskell,communication,interactive,Java,Haskell,Communication,Interactive,您好,我创建了一个进程,现在希望通过Runtime.exec执行一个haskell程序,并与进程交互通信 例如,我想启动一个haskell程序,如 ghci fab=a*b f 2 3 现在如果我使用类似 进程=Runtime.getRuntime().exec(“ghci”) 以后不能再做这样的事了 进程=Runtime.getRuntime().exec(“让f a b=a*b”); 也 进程=Runtime.getRuntime().exec(“ghci |让f a b=a*b”) 行不通

您好,我创建了一个进程,现在希望通过Runtime.exec执行一个haskell程序,并与进程交互通信

例如,我想启动一个haskell程序,如

ghci

fab=a*b

f 2 3

现在如果我使用类似

进程=Runtime.getRuntime().exec(“ghci”)

以后不能再做这样的事了

进程=Runtime.getRuntime().exec(“让f a b=a*b”); 也

进程=Runtime.getRuntime().exec(“ghci |让f a b=a*b”)

行不通

在没有bash文件的情况下,如何在同一进程上通信和执行命令


感谢您的帮助,希望我能很好地解释我的问题

您需要通过标准输入/标准输出流进行通信,以实现您的目标。但这并不容易,您需要一些定义良好的协议来避免死锁等


但我有件事要告诉你们,tat可能更适合你们的需要:万一你们不知道,有一种叫做Haskell 2010的语言,它可以编译成Java代码。它还支持JSR223脚本,因此您可以从java代码中运行和计算表达式。

我真的必须使用java。其基本思想是,客户机可以向服务器发送一个haskell文件,该文件充当编译器并充当通信的桥梁。这就是我所说的:您使用Java,并通过脚本支持调用脚本。Frege很可能会像Haskell一样解释和运行您的Script,除非它使用某些不受支持的GHC扩展或库。如果这不是一个选项,我建议先用GHC编译Haskell文件,然后运行可执行文件。BufferedWriter w=new BufferedWriter(new OutputStreamWriter(p.getOutputStream());w、 写入(“设fab=a+b\n”);w、 冲洗();这就是诀窍。尽管这很棘手。无论如何,Thx:)