Haskell - main.hs:121:19:输入`< - '解析错误

时间:2015-03-24 06:37:16

标签: file parsing haskell line main

import System.Environment
import Control.Monad

getLines = liftM lines . readFile

main = do
    argv <- getArgs
    name <- getProgName
    if not (null argv)
    then let file = head argv 
             list <- getLines file
             mapM_ putStrLn list
    else hPutStr stderr $ "usage: " ++ name ++ " number\n"

我不确定我做错了什么以及为什么我会收到这个错误。

1 个答案:

答案 0 :(得分:3)

let块应该跟随更多&#39;变量&#39;作业,或应该结束。在这种情况下,您希望对齐let下的下一个操作。所有这些都应该在do声明中。

所以......你希望在do后面有一个then,并且想要将list <- ...mapM_ ...与let命令对齐:< / p>

main = do
    argv <- getArgs
    name <- getProgName
    if not (null argv)
    then do
       let file = head argv 
       list <- getLines file
       mapM_ putStrLn list
    else hPutStr stderr $ "usage: " ++ name ++ " number\n"