Combining type constraints
Andrew J Bromage
ajb@spamcop.net
Fri, 9 Aug 2002 11:54:00 +1000
G'day all.
I have a large number of functions all of which use the same set
of type constraints, such as:
> foo :: (Monad m, Ord t, Show t) => ...
Ideally, I'd like to combine them into one typeclass. At the moment,
I'm using the equivalent of:
> class (Monad m, Ord t, Show t) => Constraints m t where { }
> instance (Monad m, Ord t, Show t) => Constraints m t where { }
> foo :: (Constraints m t) => ...
This requires undecidable instances. Is there a way to do this that
doesn't require non-98 features apart from multi-parameter type
classes?
If not, is there an argument for a language construction which supports
this idiom, analogous to type synonyms, except for type classes?
Cheers,
Andrew Bromage