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