我正在尝试打开文件,如果它存在或使用stdin代替。我想在hInFile上调用hGetContents。这就是我提出的,但不知道如何使其发挥作用。
main :: IO ()
main = do
args <- getArgs
let (inFileExists, inFile) = procArgs args
if inFileExists
then hInFile <- openFile inFile ReadMode --this gives me parse error
else let hInFile = stdin
input' <- hGetContents hInFile
print hInFile
return ()
答案 0 :(得分:4)
if
是一个表达式,因此分支也必须是... <- ...
和let ... = ...
不是的表达式。相反,我会做类似
hInFile <- if inFileExists
then openFile inFile ReadMode
else return stdin
其中return stdin
说&#34;只需给我回复stdin
&#34;,但需要让所有类型都能正常运行。