
Simon Peyton-Jones wrote:
derive( Typeable (T a) )
But that means adding 'derive' as a keyword. Other possibilities:
deriving( Typeable (T a) ) -- (B) Re-use 'deriving' keyword
The trouble with (B) is that the thing inside the parens is different in this situation than in a data type declaration. Any other ideas?
instance Typeable (T a) deriving
Why not even simply instance Typeable (T a) In other words, derivable classes define default implementations for all their methods. Advantages: (1) no syntax change at all required (2) derived class instances can be partially redefined by the user Disadvantages: (1) Slightly more work in some cases because a complete instance declaration is required. Example: instance Eq a => Eq (T a) Cheers, Andres