
I have the following class: class Region a where numDimensions :: a -> Int dim :: Int -> a -> (Double,Double) merge :: a -> a -> a and several ancillary methods defined, the most importance of which is: bounds :: Region a => a -> [(Double,Double)] bounds r = take (numDimensions r) . map dim . iterate (+1) $ 0 Let's say that I want all Regions to also be of class Eq, where regiona == regionb = all $ zipWith (==) (bounds regiona) (bounds regionb) How do I declare all Regions to be Eqs without putting it in the class body (since I define a function over all Regions that is independent of datatype that is an instance of Region)? Is it merely: instance Region a => Eq a where regiona == regionb = all $ zipWith (==) (bounds regiona) (bounds regionb) -- Jeff