On 06/17/2014 07:41 AM, Vladimir Matveev wrote:
Overloading Mul for matrix multiplication would be a mistake, since that 
operator does not act the same way multiplication acts for scalars.

I think that one of the main reasons for overloading operators is not their 
genericity but their usage in the code.

     let a = Matrix::new(…);
     let x = Vector::new(…);
     let b = Vector::new(…);
     let result = a * x + b;

Looks much nicer than

     let result = a.times(x).plus(b);

In mathematical computations you usually use concrete types, and having 
overloadable operators just makes your code nicer to read.

Fair enough (indeed I don't think the current operator overloading is usable for generics), but I still stand by my point. It is just more useful in practice to sugar the element-wise multiplication than matrix multiplication (i.e. I find that I use the elementwise multiplication a lot more often than matrix multiplication). This isn't unprecedented, as Python's Numpy library does this too for its multi-dimensional array class (notably it doesn't do this for the dedicated matrix class... but I found it to be very limited and not useful in generic code).

-SL


_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to