
On 18 February 2005 16:31, Mirko Rahn wrote:
The Report (section 9.3, especially notes 1 and 2) says "A nested context must be further indented than the enclosing context", ...
Okay, I understand, but the behavoir of hugs vs ghc vs Language.Haskell.Parser is still strange: The sniplets
** A: g xs = do ys <- workM xs if null ys then return [] else do zs <- workM ys return zs
** B: g xs = do ys <- workM xs if null ys then return [] else do zs <- workM ys return zs
** C: f xs = case xs of y:ys -> case ys of z:zs -> zs
** D: f x = case x of False -> do { return x; }
are accepted by A B C D ghc yes no no yes hugs yes no no no Language.Haskell.Parser.parseModule no yes yes no report no no no no
Hugs is probably the most correct here. A is intentionally parsed by Hugs and GHC. D is a known bug in GHC. It looks like Language.Haskell.Parser may have bugs in this area. Interestingly, Haddock is better than GHC, giving the same results as Hugs. Haddock's parser is based on Language.Haskell.Parser, so it looks like a bug has been introduced in Language.Haskell.Parser at some point. Cheers, Simon