Language.Haskell.Parser and layout rules

Ross Paterson ross at soi.city.ac.uk
Thu Feb 17 09:03:25 EST 2005


On Thu, Feb 17, 2005 at 01:40:31PM +0100, Mirko Rahn wrote:
> The function Language.Haskell.Parser.parseModule behaves somehow strange and
> disagrees with ghc-6.* about the set of accepted inputs. An example:
> 
> -- file T1.hs:
> main = do args <- getArgs
>         if null args then return [] else do
>         ps <- mapM process args
>         mapM print ps

The Report (section 9.3, especially notes 1 and 2) says "A nested context
must be further indented than the enclosing context", so this is illegal.
GHC and Hugs have innovated here, but only where the inner context is
a do expression; they don't accept

f xs = case xs of 
        y:ys -> case ys of
        z:zs -> zs


More information about the Libraries mailing list