首页 文章

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

提问于
浏览
1

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

我是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 回答

  • 4

    您需要 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
    

相关问题