[Haskell-cafe] forall and a parse error

Simon Peyton-Jones simonpj at microsoft.com
Tue Jul 4 11:55:49 EDT 2006


It's a parsing infelicity.  (Inside square brackets the parser knows not
to expect a forall, whereas inside round parens it might.)  Perhaps it
should be more accepting in square brackets, and reject later.

Which the current HEAD does -- actually [forall a. a->a] is ok in the
HEAD, see our ICFP06 paper.

Simon

| -----Original Message-----
| From: haskell-cafe-bounces at haskell.org
[mailto:haskell-cafe-bounces at haskell.org] On Behalf Of Neil
| Mitchell
| Sent: 03 July 2006 19:44
| To: Haskell Cafe
| Subject: [Haskell-cafe] forall and a parse error
| 
| Hi,
| 
| I was experimenting with forall and higher rank types briefly, in
particular:
| 
| x :: [forall a . a]
| 
| This is illegal because of:
|
http://www.haskell.org/ghc/docs/latest/html/users_guide/type-extensions.
html#universal-quantification
| 
| Which is fine, however its surprising to compare the error messages:
| 
| [forall a . a]
| parse error on input `forall'
| 
| [(forall a . a)]
|     Illegal polymorphic or qualified type: forall a. a
|     In the type signature: lst :: [(forall a. a)]
| 
| In normal Haskell, I tend to view [x] as equivalent to [(x)] (provided
| that x is not a tuple) but in this case it has a different meaning -
| albeit both are erronous meanings.
| 
| When running the example with Hugs, they both come out as syntax
| errors - the first on the forall, the second on the closing square
| bracket.
| 
| Thanks
| 
| Neil
| _______________________________________________
| Haskell-Cafe mailing list
| Haskell-Cafe at haskell.org
| http://www.haskell.org/mailman/listinfo/haskell-cafe


More information about the Haskell-Cafe mailing list