GHC 6.6 GADT type unification vs GHC 6.8

Jason Dagit dagit at
Tue Jul 29 10:14:09 EDT 2008

On Tue, Jul 29, 2008 at 1:07 AM, Simon Peyton-Jones
<simonpj at>wrote:

>  GHC 6.6 was a bit more generous than GHC 6.8, but erroneously so.
>   Specifically, GHC 6.8 and all subsequent versions require that when you
> pattern match on a value of GADT type,
> ·         the type of the scrutinee
> ·         the type of the result of the case
> ·         the types of any free variables used inside the case
> alternatives
> are all completely known ("rigid" in GHC's terminology) at the case
> expression.
Thanks, this makes sense and helps.   Is this described in the wobbly types
paper, or is paper covering a different topics?  I would like to have a
cite-able reference.

> The easiest way to make a variable have a rigid type is to give it a type
> signature.
> I don't expect to revert to GHC 6.6's behaviour because I don't know how to
> do (robust, complete) type inference for that.

In that case, good thing I finally figured out what changes to make to darcs
so that our type witness code compiles in both 6.6 and 6.8.  My changes
match what you describe.

> I'll add these remarks to the user manual.

-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Glasgow-haskell-users mailing list