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

Reply via email to