【发布时间】:2011-05-29 15:25:27
【问题描述】:
我正在尝试学习 Haskell,并想编写一个将文件内容打印到屏幕上的小程序。当我将它加载到 GHCi 中时,出现以下错误:
“do”结构中的最后一条语句必须是表达式
我知道这里已经有人问过这个问题:Haskell — “The last statement in a 'do' construct must be an expression”。
即使我的代码非常相似,我仍然无法找出问题所在。如果有人能向我指出问题,我将非常感激。
module Main (main) where
import System.IO
import System(getArgs)
main :: IO()
main = do
args <- getArgs
inh <- openFile $ ReadMode head args
printFile inh
hClose inh
printFile :: Handle -> IO ()
printFile handle = do
end <- hIsEOF handle
if end
then return ()
else do line <- hGetLine handle
putStrLn line
printFile handle
【问题讨论】:
-
那么,您检查过您的缩进是否损坏(即您有制表符和空格)吗?
-
@delnan:我做到了。我什至把它从制表符改成了空格。
-
@delnan:第 15:4 行:'end
-
使用明确的
{ ; }永远不必担心这种空白的愚蠢。
标签: haskell syntax io monads do-notation