我正在尝试创建一个程序来比较运行各种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或任何您喜欢的语言进行解析/显示。