[Haskell-cafe] Instances of constrained datatypes

Arjun Guha guhaarju at grinnell.edu
Wed Apr 6 02:10:10 EDT 2005


This is a contrived example, but contains the essence of what I'd like 
to do.  Suppose I have this datatype:

 > data (Eq v) => EqList v = EqList [v]

I'd like to make it an instance of Functor.  However, fmap takes an 
arbitrary function  of type a -> b.  I need an Eq constraint on a and 
b.  Is there any way to do this without creating my own `EqFunctor' 
class with explicitly-kinded quantification:

 > class (Eq a) => EqFunctor (f :: * -> *) a where
 >  eqfmap:: (Eq b) => (a -> b) -> f a -> f b

Thanks.

-Arjun



More information about the Haskell-Cafe mailing list