At 2002-12-14 15:27, [EMAIL PROTECTED] wrote: >I define > >class Mul a b c | a b -> c, b a -> c where mul :: a -> b -> c
The two constraints are identical. Each one says "given a and b, you have c". What you want is essentially this: class (Mul b a c) => Mul a b c where mul :: a -> b -> c mul a b = mul b a ...but that's not allowed as superclass contexts cannot be circular. >I want > >instance (Mul a b c) => Mul b a c where mul x y = mul y x This will overlap with any other "Mul" instance. Instance declarations cannot be made overridable the way functions in OOP languages can be: each instance declaration must have an entirely separate domain. -- Ashley Yakeley, Seattle WA _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell