How overload operator in Haskell?

Ketil Z. Malde ketil at ii.uib.no
Thu Nov 6 01:48:02 EST 2003


Andrew J Bromage <ajb at spamcop.net> writes:

> 	class Plus a b c | a b -> c where
> 	    (+) :: a -> b -> c

> 	class Mult a b c | a b -> c where
> 	    (*) :: a -> b -> c

This kind of approach was discussed a while ago, and has a bunch of
things to recommend it.  Is the functional dependency sufficient to
avoid any ambiguity?

> 	class (Eq a, Show a,
> 	       Plus a a a, Mult a a a, {- etc -}
> 	      ) => Num a

> Apart from the possibility of naming these typeclasses better, this
> reorganisation gets my vote for Haskell 2.

Add the ability to do 

        instance Num Foo where
                a + b = ...
                a - b = ...
                a * b = ...

i.e when instantiating a derived class (if one can call it that),
allow implicit instantiation of base classes.

One thing to look out for, is a hierarchy of esoterically named
classes, and consequentially, error messages incomprehensible to
people unfamiliar with the details of the hierarchy.

-kzm
-- 
If I haven't seen further, it is by standing in the footprints of giants


More information about the Haskell mailing list