从Java获取Haskell脚本的结果

fyl*_*lth 5 java haskell

我正在尝试创建一个程序来比较运行各种haskell脚本所需的时间,稍后将用于创建图形并在GUI中显示.我曾尝试使用Haskell库创建所述GUI,但我没有太多运气,特别是因为我无法找到最新的Windows GUI库.我曾尝试使用Java来获取这些结果,但要么返回错误,要么根本没有结果.

我构建了一个最小的例子,大致显示了我现在正在做的事情:

    import java.io.*;
public class TestExec {
    public static void main(String[] args) {
        try {
            Process p = Runtime.getRuntime().exec("ghc test.hs 2 2");
            BufferedReader in = new BufferedReader(
                                new InputStreamReader(p.getInputStream()));
            String line = null;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是调用的Haskell脚本,在这种情况下是一个简单的补充:

test x y =  x + y
Run Code Online (Sandbox Code Playgroud)

目前,根本没有存储或打印任何结果.有人有主意吗?

Dan*_*zer 3

由于您尝试将其作为可执行文件运行,因此您需要提供 main. 在你的情况下它应该看起来像

import System.Environment

test :: Integer -> Integer -> Integer
test = (+)

main = do
  [x, y] <- map read `fmap` getArgs
  print $ x `test` y
Run Code Online (Sandbox Code Playgroud)

这只是读取命令行参数,添加它们,然后打印它们。虽然我不久前做了类似的事情,但在 Haskell 中进行基准测试/测试要容易得多,并将输出数据以更结构化的格式转储到文本文件中,然后用 Java 或您喜欢的任何语言解析/显示它。