Conor,

I'm scared. What about this?

data EQ :: * -> * -> * where
 Refl :: EQ x x

class Public x where
 blah :: EQ x Fred

instance Public Fred where
 blah = Refl

What happens when I say

newtype Jim = Hide Fred deriving Public

? I tried it. I get

 blah :: EQ Jim Fred

It's clear that GeneralizedNewtypeDeriving goes too far.

Now, I am scared. This should be regarded as a bug in generalised newtype deriving, shouldn't it? I would expect newtype deriving to be unable to come up with instances that cannot be written by hand.

I would have expected people out on the streets marching to GHC headquarters by now; how can you stay so calm?

Cheers,

  Stefan
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to