
28 Mar
2007
28 Mar
'07
9:06 a.m.
Tomasz Zielonka wrote:
On Mon, Mar 26, 2007 at 09:18:34PM -0700, Stefan O'Rear wrote:
stefan@stefans:/tmp$ cat A.lhs
{-# OPTIONS_GHC -fglasgow-exts #-}
data IsIntT x where IsIntT :: IsIntT Int
class IsIntC a where isInt :: IsIntT a instance IsIntC Int where isInt = IsIntT
newtype Foo = Foo Int deriving(IsIntC)
I think newtype deriving should be rejected in this case. Maybe this is the real problem here?
Best regards Tomek
On reflection, I agree. The derived instance would have to be
instance IsIntC Foo where isInt :: IsIntT Foo isInt = isIntT
which cannot type check. Only
instance IsIntC Foo where isInt :: IsIntT Foo isInt = undefined
is possible.