[Haskell-cafe] How to define an operation in terms of itself (but
of different type)?
lrpalmer at gmail.com
Sat Jan 24 01:34:15 EST 2009
2009/1/23 Brandon S. Allbery KF8NH <allbery at ece.cmu.edu>
> On 2009 Jan 23, at 17:58, Olex P wrote:
> class Vector v where
> (^+^) :: v -> v -> v
> class Matrix m where
> (^+^) :: m -> m -> m
> You can't reuse the same operator in different classes. Vector "owns"
> (^+^), so Matrix can't use it itself. You could say
> > instance Matrix m => Vector m where
> > (^+^) = ...
No you can't! Stop thinking you can do that!
It would be sane to do:
class Vector m => Matrix m where
-- matrix ops that don't make sense on vector
Thus anything that implements Matrix must first implement Vector. Which is
sane because matrices are square vectors with some additional structure, in
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe