type annotations for GADTs
Ganesh Sittampalam
ganesh at earth.li
Wed Oct 12 09:37:20 EDT 2005
In case it influences your decision re 6.4.2 slightly, it would be quite
useful for the darcs code base to have a 6.4 release that fixes this, as
having to put in the extra type annotations is somewhat disruptive.
[Darcs is experimenting with GADTs to help enforce some correctness
properties in the patch handling code; see
http://wiki.darcs.net/index.html/GADTPlan for a rough explanation]
Cheers,
Ganesh
On Wed, 12 Oct 2005, Simon Peyton-Jones wrote:
> A palpable bug, thank you. Now fixed in CVS. It'll be in 6.4.2 also if
> we ever release that.
>
> Simon
>
> | -----Original Message-----
> | From: glasgow-haskell-bugs-bounces at haskell.org
> [mailto:glasgow-haskell-bugs-
> | bounces at haskell.org] On Behalf Of Ganesh Sittampalam
> | Sent: 29 September 2005 11:40
> | To: glasgow-haskell-bugs at haskell.org
> | Subject: type annotations for GADTs
> |
> | Hi,
> |
> | I found it slightly surprising that the program below (also attached
> as a
> | file) needs the nested type annotations in the place commented. It's
> not
> | really clear whether it's a bug or just a natural consequence of GADT
> | type-checking, but since Simon Marlow also found it surprising it at
> first
> | glance, I thought I'd send it in for comment.
> |
> | The intuitive argument I came up with for why it might be necessary is
> | that each GADT requires some kind of type signature in argument
> position
> | to generalise its type correctly, and the overall signature for doy
> isn't
> | enough to generalise the type of the X arguments.
> |
> | Cheers,
> |
> | Ganesh
> |
> | data X a b where
> | X :: X a a
> |
> | data Y x a b where
> | Y :: x a b -> x b c -> Y x a c
> |
> | {- This needs the nested type annotations -}
> | doy :: Y X a b -> Y X a b
> | doy (Y (X :: X a c) (X :: X c b)) = Y X X
> |
> | data YX a b where
> | YX :: X a b -> X b c -> YX a c
> |
> | {- This version doesn't need them -}
> | doyx :: YX a b -> YX a b
> | doyx (YX X X) = YX X X
>
>
More information about the Glasgow-haskell-bugs
mailing list