将Haskell GHCi输出重定向到文本文件

时间:2013-02-04 13:47:58

标签: haskell file-io cmd executable exe

  

可能重复:
  Outputting Haskell GHCi command results to a txt file

我是Haskell的新手,我正在尝试将测试用例输出结果重定向到文本文件。它现在的设置方式是AddAllTestCases.hs包含我需要运行的所有测试用例,以便测试我创建的函数。我通过加载AddAllTestCases.hs在GHCi上运行测试用例,然后只需键入main并按Enter键。这导致测试用例输出结果完美地打印在GHCi内部。

因为有数百个测试用例,我需要将输出结果重定向到文本文件。

尝试#1:

writeFile "myoutput.txt" $ show $ main

我收到以下错误:

No instance for (Show(IO())) arising from a use of show

在CMD中尝试#2(尝试创建可执行文件,然后将可执行结果输出到文本文件):

ghc --make AddAllTests.hs -o testResults.exe

这给了我以下错误:

Warning: output was redirected with -o, but no output will be generated because there is no Min module

这很奇怪,因为当我使用GHCi(尝试#1)并输入main时,它会完美地执行所有操作,我认为这意味着有一个主模块?

我非常感谢将测试用例结果重定向到文本文件的任何帮助。

非常感谢提前!

1 个答案:

答案 0 :(得分:5)

您需要Main模块(以及main操作)才能生成可执行文件。您可以将模块重命名为Main,或者可以在命令行中指定要视为Main的模块,

ghc --make -main-is AddAllTests AddAllTests.hs -o testResults.exe

生成没有名为Main的模块的可执行文件。

没有编译的方法将是

ghc AddAllTests.hs -e "main" > testResults.txt

另一种方法是拥有一个文件,在其中只列出所有测试用例,

3 + 2 :: Rational
reverse "foobar"
:q

并使用重定向的输入和输出

运行ghci
ghci < testCases > testResults.txt