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 <lrpal...@gmail.com> wrote: > 2009/1/23 Brandon S. Allbery KF8NH <allb...@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 > some sense. > > Luke >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe