Propsal: NoDatatypeContexts

Christian Maeder Christian.Maeder at dfki.de
Mon Jul 19 05:29:37 EDT 2010


Ian Lynagh schrieb:
> Hi all,
> 
> H98 and H2010 allow a context to be given for datatypes, e.g. the
> "Eq a" in
> 
>     data Eq a => Foo a = Constr a
> 
> I have made a proposal to remove support for that context (ticket #139).
> More details are on the proposal wiki page:
> 
>     http://hackage.haskell.org/trac/haskell-prime/wiki/NoDatatypeContexts

I'm for this proposal, although I've got an example where I need this
context, namely for DrIFT to derive a proper context for instances.

DrIFT doesn't know that the Read instance for Data.Set.Set relies on Ord
of the elements. For

data Ord symbol => ExtSign sign symbol = ExtSign
  { plainSign :: sign
  , nonImportedSymbols :: Set.Set symbol
  } deriving Show

DrIFT cannot derive the Read (or our deserialization) instance without
the "Ord symbol =>" context.

However, ghc is able by "deriving (Show, Read)" to see

instance (Ord symbol, Read sign, Read symbol) =>
         Read (ExtSign sign symbol)

without the context.

Cheers Christian



More information about the Haskell-prime mailing list