[Haskell-cafe] instance Monad m => Functor m
Hans Aberg
haberg at math.su.se
Wed Apr 9 10:32:13 EDT 2008
On 9 Apr 2008, at 15:23, Henning Thielemann wrote:
> I also recognized that problem in the past, but didn't know how to
> solve it. In Haskell 98, methods are resolved using the types of
> the operands. How would the compiler find out which implementation
> of (+) to choose for an expression like x+y using your approach?
I might describe the idea via mangling. So if one has
class Magma (a; unit, mult) where
unit :: a
mult :: a -> a -> a
then instances
Monoid (a; 0; (+))
Monoid (a; 1; (*))
should logically equivalent to
Monoid_0_+ (a)
0 :: a
(+) :: a -> a -> a
Monoid_1_* (a)
1 :: a
(*) :: a -> a -> a
or whatever internal mangling that ensures that the names Monoid_0_+
and Monoid_1_* are different.
Would this not work? - They code should be essentially a shortcut for
defining new classes.
Hans
More information about the Haskell-Cafe
mailing list