4

可能重复:
将 Haskell GHCi 命令结果输出到 txt 文件

我是 Haskell 的新手,我正在尝试将测试用例输出结果重定向到文本文件。它现在的设置方式是AddAllTestCases.hs包含我需要运行的所有测试用例,以测试我创建的功能。我通过加载在 GHCi 上运行测试用例AddAllTestCases.hs,然后只需键入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它时,它会完美地执行所有内容,我认为这意味着有一个主模块?

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

提前谢谢了!

4

1 回答 1

6

您需要一个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
于 2013-02-04T13:52:23.167 回答