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