[Haskell-cafe] Why were datatype contexts removed instead of "fixing them"?

Gábor Lehel illissius at gmail.com
Thu Apr 25 16:35:25 CEST 2013

I've wondered this too. What would have been wrong with a simple
source-to-source translation, where a constraint on the datatype itself
translates to the same constraint on each of its constructors? Perhaps it
would be unintuitive that you would have to pattern match before gaining
access to the constraint? On a superficial examination it would have been
backwards-compatible, allowing strictly more programs than the previous

On Thu, Apr 25, 2013 at 12:38 PM, harry <voldermort at hotmail.com> wrote:

> If I understand correctly, the problem with datatype contexts is that if we
> have e.g.
>   data Eq a => Foo a = Foo a
> the constraint Eq a is thrown away after a Foo is constructed, and any
> method using Foos must repeat Eq a in its type signature.
> Why were these contexts removed from the language, instead of "fixing"
> them?
> PS This is following up on a discussion on haskell-beginners, "How to avoid
> repeating a type restriction from a data constructor". I'm interested in
> knowing whether there's a good reason not to allow this, or if it's just a
> consequence of the way type classes are implemented by compilers.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

Your ship was destroyed in a monadic eruption.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130425/62034ca8/attachment.htm>

More information about the Haskell-Cafe mailing list