
#8026: DatatypeContexts should be fixed, not deprecated -----------------------------+---------------------------------------------- Reporter: gidyn | Owner: Type: feature request | Status: new Priority: normal | Component: Compiler Version: 7.6.3 | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- To borrow an example from the [http://hackage.haskell.org/trac/haskell- prime/wiki/NoDatatypeContexts prime wiki page], the following code fails to compile: {{{ data Eq a => Foo a = Foo a isEq :: Foo a -> Foo a -> Bool isEq (Foo x) (Foo y) = x == y }}} We have to tell the compiler that {{{Eq a => Foo a}}} in {{{isEq}}}, even though this is part of the data type's definition. Furthermore, {{{ getVal :: Foo a -> a getVal (Foo x) = x }}} will also fail because of the missing constraint, even though it isn't used in the function's definition. Rather than just deprecating the {{{DatatypeContexts}}} extension, it should be "fixed" to remember the context wherever the data type is used. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/8026 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler