[Haskell-cafe] Why were datatype contexts removed instead of "fixing them"?
illissius at gmail.com
Thu Apr 25 21:19:06 CEST 2013
Good point, again. Is that the only problem with it?
On Thu, Apr 25, 2013 at 5:57 PM, Dan Doel <dan.doel at gmail.com> wrote:
> It is not completely backwards compatible, because (for instance) the
> newtype C a => Foo a = Foo a
> was allowed, but:
> newtype Foo a where
> Foo :: C a => a -> Foo a
> is an illegal definition. It can only be translated to a non-newtype data
> declaration, which changes the semantics.
> On Thu, Apr 25, 2013 at 10:35 AM, Gábor Lehel <illissius at gmail.com> wrote:
>> 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
>>> 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"
>>> PS This is following up on a discussion on haskell-beginners, "How to
>>> 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
>>> consequence of the way type classes are implemented by compilers.
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>> Your ship was destroyed in a monadic eruption.
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
Your ship was destroyed in a monadic eruption.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe