[Haskell] recursive deriving
Alex Jacobson
alex at alexjacobson.com
Tue Nov 20 19:18:22 EST 2007
When you want automated deriving of show/read etc., you need all the
components of your type also to be instances of show/read but you won't
want to *require* them to be automatically generated verions.
Standalone deriving does the wrong thing here. Standalone deriving
should not cause an overlapping instance error if someone derives an
instance manually. Instead, the manually derived instance should be
treated as more specific and win out.
The other part of this problem is that you can't do automatic recursive
deriving and this results in a ridiculous amount of boilerplate. I know
some people have a theory that they want to avoid accidentally creating
instances for things that shouldn't have them, but the solution to that
is probably to add some declaration for types that prohibits automatic
deriving for those types. The 99% case is that automatic deriving is ok.
Proposed syntax:
derive instance Show T recursively
data T = T no-deriving (Ord,Eq)
-Alex-
More information about the Haskell
mailing list