
Yeah guys. I confused myself. I forgot why I had to implement several "+"
operators (^+^, ^+, ^+. etc.) for Vector class. Now I've got an idea again.
Different names make a perfect sense.
Thanks a lot.
On Sat, Jan 24, 2009 at 6:34 AM, Luke Palmer
2009/1/23 Brandon S. Allbery KF8NH
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 some sense.
Luke