[Haskell-cafe] Parse error
Daniel Fischer
daniel.is.fischer at web.de
Sun Jan 17 05:31:16 EST 2010
Am Sonntag 17 Januar 2010 11:05:47 schrieb Andrew Coppin:
> Is there a specific reason why GHC consistently refuses to accept the
> following perfectly reasonable code snippet?
Yes, you violated the layout rule.
>
> main = do
> putStrLn "Line 1"
> putStrLn "Line 2"
>
> let xs = do
> x <- [1..10]
> y <- [1..10]
> return (x+y)
>
> print xs
>
> No matter which way I rearrange this, it *insists* that there's a parse
> error. This is very frustrating, given that it's utterly clear what I
> want...
It's not.
ACLayout.hs:7:11: Empty 'do' construct
should give a hint (line 7 is " let xs = do").
The next line after that is indented less than the "xs", so it ends the
binding for xs (in fact, the entire let binding group) .
You have to indent the lines in the do-block defining xs more than xs
itself.
More information about the Haskell-Cafe
mailing list