【问题标题】:Redirecting Haskell GHCi output to text file [duplicate]将Haskell GHCi输出重定向到文本文件[重复]
【发布时间】:2013-02-04 13:47:58
【问题描述】:

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

我是 Haskell 的新手,我正在尝试将测试用例输出结果重定向到文本文件。现在设置的方式是 AddAllTestCases.hs 包含我需要运行的所有测试用例,以便测试我创建的函数。我通过加载AddAllTestCases.hs 然后简单地输入main 并按回车键在GHCi 上运行测试用例。这会导致测试用例输出结果完美地打印在 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 时,它完美地执行了所有操作,我认为这意味着有一个主模块?

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

提前非常感谢!

【问题讨论】:

    标签: haskell file-io cmd executable exe


    【解决方案1】:

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

    【讨论】:

    • +1 出色而清晰的回复,完美运行,谢谢!
    猜你喜欢
    • 2014-03-03
    • 2013-04-21
    • 1970-01-01
    • 2021-11-04
    • 2017-04-24
    • 2015-06-21
    • 2018-11-07
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多