[Haskell-cafe] forall and a parse error

Remi Turk rturk at science.uva.nl
Wed Nov 15 17:59:20 EST 2006


Probably unrelated, but this thread is what triggered it for me.
There is a minor bug in showing impredicative types without
-fglasgow-exts: *hope I got that right*

Prelude> let x = [] :: [forall a. a]

<interactive>:1:23:
    Warning: Accepting non-standard infix type constructor `.'
             Use -fglasgow-exts to avoid this warning
Prelude> :t x
x :: [. (forall a) a]

     ^^^^^^^^^^^^^^^^

When -fglasgow-exts is set it shows what it should:

Prelude> :t x
x :: [forall a. a]

Groetjes, Remi

On Tue, Jul 04, 2006 at 04:55:49PM +0100, Simon Peyton-Jones wrote:
> 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
> _______________________________________________
> 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