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

标签 haskell file-io cmd executable exe

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Outputting Haskell GHCi command results to a txt file



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

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

提前谢谢了!

最佳答案

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

关于haskell - 将 Haskell GHCi 输出重定向到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14688119/

相关文章:

list - 在 Haskell 中配对相邻列表项

haskell - 函数字面量与 Lambda 表达式和匿名函数是一回事吗?

file-io - 如何在VHDL中读取一行中的元素?

java - 如何在 Windows 上的 Java 中使用 vt100 转义码

loops - 我们如何创建在特定范围内调用 .exe 的 FOR 循环?

windows - 文件名与模块名不匹配

haskell - 嵌套参数化类型的实例

python - 有没有办法为python读写的所有文件设置编码

c++ - 读取中间名可选的文件

java - 运行最后一行包含 'exit' 的批处理文件后,命令提示符不关闭