我正在尝试创建一个程序来比较运行各种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();
        }
    }
}

这是它正在调用的Haskell脚本,在这种情况下,是一个简单的添加:
test x y =  x + y

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

最佳答案

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

import System.Environment

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

main = do
  [x, y] <- map read `fmap` getArgs
  print $ x `test` y

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

09-25 18:37
查看更多