Haskell -- main.hs:121:19: 输入“<-”时出现解析错误
Haskell -- main.hs:121:19: parse error on input `<-'
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"
我不确定我做错了什么以及为什么会出现此错误。
一个 let
块后面应该有更多的 'variable' 赋值,或者应该结束。在这种情况下,您希望在 let
下对齐下一步操作。所有这些都应该在 do
语句中。
所以....你想在你的 then
之后有一个 do
,你想用 let 命令对齐 list <- ...
和 mapM_ ...
:
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"
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"
我不确定我做错了什么以及为什么会出现此错误。
一个 let
块后面应该有更多的 'variable' 赋值,或者应该结束。在这种情况下,您希望在 let
下对齐下一步操作。所有这些都应该在 do
语句中。
所以....你想在你的 then
之后有一个 do
,你想用 let 命令对齐 list <- ...
和 mapM_ ...
:
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"