Anc*_*end 2 file-io executable haskell cmd exe
可能重复:将
Haskell GHCi命令结果输出到txt文件
我是Haskell的新手,正在尝试将测试用例的输出结果重定向到文本文件。现在,它的设置方式AddAllTestCases.hs包含了我需要运行的所有测试用例,以测试我创建的功能。我通过加载AddAllTestCases.hs然后在GHCi上运行测试用例,然后只需键入main并按Enter。这会导致测试用例输出结果完美地打印在GHCi内部。
因为存在数百个测试用例,所以我需要将输出结果重定向到文本文件。
尝试1:
writeFile "myoutput.txt" $ show $ main
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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它时,它会完美地执行所有操作(我认为这意味着存在一个主模块)?
我非常感谢将测试用例结果重定向到文本文件的任何帮助。
提前谢谢了!
您需要一个Main模块(和一个main动作)来生成可执行文件。您可以将模块重命名为Main,也可以Main在命令行上指定要考虑的模块,
ghc --make -main-is AddAllTests AddAllTests.hs -o testResults.exe
Run Code Online (Sandbox Code Playgroud)
产生没有名为模块的可执行文件Main。
没有编译的方法是
ghc AddAllTests.hs -e "main" > testResults.txt
Run Code Online (Sandbox Code Playgroud)
另一种方法是拥有一个文件,其中仅列出所有测试用例,
3 + 2 :: Rational
reverse "foobar"
:q
Run Code Online (Sandbox Code Playgroud)
并ghci使用重定向的输入和输出运行
ghci < testCases > testResults.txt
Run Code Online (Sandbox Code Playgroud)