It is not completely backwards compatible, because (for instance) the
declaration:

    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 <illiss...@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
> handling.
>
> On Thu, Apr 25, 2013 at 12:38 PM, harry <volderm...@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@haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>
>
>
> --
> Your ship was destroyed in a monadic eruption.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to