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

将Haskell GHCi输出重定向到文本文件,haskell,file-io,cmd,executable,exe,Haskell,File Io,Cmd,Executable,Exe,可能重复: 我是Haskell的新手,我正在尝试将测试用例输出结果重定向到文本文件。它现在的设置方式是一个AddAllTestCases.hs包含我需要运行的所有测试用例,以便测试我创建的函数。我通过加载AddAllTestCases.hs然后简单地键入main并点击回车键,在GHCi上运行测试用例。这将导致测试用例输出结果在GHCi内部完美打印 因为有数百个测试用例,所以我需要将输出结果重定向到文本文件 尝试#1: 我得到以下错误: 没有因使用Show而产生的(Show(IO())实例 在C

可能重复:

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

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

尝试#1:

我得到以下错误:

没有因使用Show而产生的(Show(IO())实例

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

ghc——生成AddAllTests.hs-o testResults.exe

这给了我以下错误:

警告:输出已使用-o重定向,但不会生成输出,因为没有最小模块

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

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


非常感谢

您需要一个
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
ghcitestResults.txt

+1精彩而清晰的回答,效果完美,谢谢!
ghci < testCases > testResults.txt