Proposal for stand-alone deriving declarations?

Michael Shulman viritrilbia at
Fri Oct 6 11:39:39 EDT 2006

On 10/6/06, John Hughes <rjmh at> wrote:
> deriving (Eq Foo, Ord Foo)
> instead of
> deriving (Eq, Ord) for Foo

So what does

newtype Foo a = Foo a
newtype Bar b = Bar b
class C a b
deriving (C (Foo a) (Bar b))

mean?  I could see it meaning any or all of the following:

instance (C (Foo a) b) => (C (Foo a) (Bar b))
instance (C a (Bar b)) => (C (Foo a) (Bar b))
instance (C a b) => (C (Foo a) (Bar b))

Perhaps I am misunderstanding?


More information about the Haskell-prime mailing list