File Haskell--main.hs:121:19:输入上的解析错误`<-'; 导入系统环境 进口管制 getLines=liftM行。读取文件 main=do argv
AFile Haskell--main.hs:121:19:输入上的解析错误`<-'; 导入系统环境 进口管制 getLines=liftM行。读取文件 main=do argv,file,parsing,haskell,line,main,File,Parsing,Haskell,Line,Main,Aletblock后面应该跟有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let下的下一个操作。所有这些都应该在do语句中 所以。。。。您希望在之后有一个do,然后,并且您希望对齐列表alet块后面应该有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let下的下一个操作。所有这些都应该在do语句中 所以。。。。您希望在之后有一个do,然后,并且您希望对齐列表alet块后面应该有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let下的下一个操作。所有这些都应该
let
block后面应该跟有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let
下的下一个操作。所有这些都应该在do
语句中
所以。。。。您希望在
之后有一个do
,然后
,并且您希望对齐列表alet
块后面应该有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let
下的下一个操作。所有这些都应该在do
语句中
所以。。。。您希望在之后有一个do
,然后
,并且您希望对齐列表alet
块后面应该有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let
下的下一个操作。所有这些都应该在do
语句中
所以。。。。您希望在之后有一个do
,然后
,并且您希望对齐列表alet
块后面应该有更多的“变量”赋值,或者应该结束。在这种情况下,您希望对齐let
下的下一个操作。所有这些都应该在do
语句中
所以。。。。你想在你的之后有一个do
,然后
,你想对齐列表谢谢,我是Haskell的新手,但是这种方法似乎是处理文件的一种很好的标准方法,或者有没有更首选的方法?始终取决于你的使用情况。你是在问它是不是地道的?不一定,但这不重要。使用您现在拥有的,当您开始变得更高级时,您将最终重构它。现在不用担心它是否管用。谢谢,我是Haskell的新手,但这种方法似乎是处理文件的一种很好的标准方法,还是有更首选的方法?始终取决于您的使用情况。你是在问它是不是地道的?不一定,但这不重要。使用您现在拥有的,当您开始变得更高级时,您将最终重构它。现在不用担心它是否管用。谢谢,我是Haskell的新手,但这种方法似乎是处理文件的一种很好的标准方法,还是有更首选的方法?始终取决于您的使用情况。你是在问它是不是地道的?不一定,但这不重要。使用您现在拥有的,当您开始变得更高级时,您将最终重构它。现在不用担心它是否管用。谢谢,我是Haskell的新手,但这种方法似乎是处理文件的一种很好的标准方法,还是有更首选的方法?始终取决于您的使用情况。你是在问它是不是地道的?不一定,但这不重要。使用您现在拥有的,当您开始变得更高级时,您将最终重构它。如果有用的话,现在不用担心。
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"
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"