I tried it again using a development version of GHC 7.1 that I downloaded in 
March.
The results are the same, with GHC generating different code for the supposedly
equivalent data types. 'barName' has an impossible pattern match against
constructor 'BarExtra', whereas 'fooName' does not.


----------------------------------------
> Date: Mon, 2 May 2011 23:03:23 -0300
> Subject: Re: Elimination of absurd patterns
> From: felipe.le...@gmail.com
> To: red...@hotmail.com
> CC: glasgow-haskell-users@haskell.org
>
> On Mon, May 2, 2011 at 6:20 PM, C Rodrigues  wrote:
> > I was experimenting with using GADTs for subtyping when I found something
> > interesting.  Hopefully someone can satisfy my curiosity.
> > Here are two equivalent GADTs.  My understanding was that GHC would
> > translate "Foo" and "Bar" into isomorphic data types.  However, GHC 6.12.3
> > generates better code for 'fooName' than for 'barName'.  In 'fooName', there
> > is no pattern match against 'FooExtra'.  In 'barName', there is a pattern
> > match against 'BarExtra'.  What makes these data types different?
>
> IIRC, GHC 6.12.3 had some problems with type equalities. Did you try GHC 
> 7.0.3?
>
> Cheers, =)
>
> --
> Felipe.
                                          
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to