Question about error message
Alastair Reid
alastair@reid-consulting-uk.ltd.uk
17 Aug 2002 23:38:37 +0100
> Hello, all There is an error message that I get from GHCI that I do
> not understand. Usually it is caused by a syntax error or an
> indentation error, but I have occasionally seen it in other contexts
> and I'd like to understand what it is trying to tell me.
>[...]
> The message is that the last statement in a do construct must be an
> expression (exact text below).
>[...]
If you have a quick glance at the Haskell report
(http://www.haskell.org/onlinereport/exps.html section 3.14), you'll
see that do syntax is defined as follows:
do {e} = e
do {e;stmts} = e >> do {stmts}
do {p <- e; stmts} = e >>= \ p -> do {stmts}
(I dropped the error reporting part of the last rule for clarity).
Try applying these rules to one of the programs that produces the error
main = do{ line <- getLine }
and you'll get:
main = getLine >>= \ line -> do{}
Now try to eliminate the final do{} and you'll find that there's no
translation - hence the error message.
--
Alastair Reid alastair@reid-consulting-uk.ltd.uk
Reid Consulting (UK) Limited http://www.reid-consulting-uk.ltd.uk/alastair/