【发布时间】:2017-04-20 01:54:44
【问题描述】:
我试图通过提供文件名作为命令行参数来读取 Haskell 中的文件。 我读到您可以通过以下方式完成此操作:
./program < input.txt
我写了这段代码:
main = do
[fileName] <- getArgs
file <- readFile fileName
print file
但我收到此错误:“do 表达式中的模式匹配失败”。如果我省略它的
【问题讨论】:
-
<符号与 Haskell 完全无关——它是“管道”运算符,它(由您的 shell 实现,并且)将一个程序的输出作为 输入 (不是命令行参数)到另一个程序。您的 Haskell 程序希望始终接收一个参数,因此会崩溃。 -
@user2407038 其实
<不是一个shell管道,它只是输入重定向。ls -l | grep foo将是一个管道。
标签: haskell terminal command-line-arguments readfile