On Wed, Jul 30, 2008 at 2:26 AM, Guido van Rossum <[EMAIL PROTECTED]> wrote: > On Fri, Jul 25, 2008 at 6:50 PM, Greg Ewing <[EMAIL PROTECTED]> wrote: >> Sebastien Loisel wrote: >> >>> What are the odds of this thing going in? >> >> I don't know. Guido has said nothing about it so far this >> time round, and his is the only opinion that matters in the >> end. > > I'd rather stay silent until a PEP exists, but I should point out that > last time '@' was considered as a new operator, that character had no > uses in the language at all. Now it is the decorator marker. Therefore > it may not be so attractive any more.
I don't like @. > I understand that you can't use A*B as matrix multiplication because > it should mean elementwise multiplication instead, just like A+B is > elementwise addition (for matrixes, as opposed to Python sequences). > > But would it be totally outlandish to propose A**B for matrix > multiplication? I can't think of what "matrix exponentiation" would > mean... http://mathworld.wolfram.com/MatrixExponential.html :-) In fact Mathematica uses ** to denote general noncommutative multiplication (though . for matrix multiplication in particular). However, this wouldn't solve the problem, because an important reason to introduce a matrix multiplication operator is to distinguish between matrix and elementwise operations for arrays. The ** operator already denotes the obvious elementwise operation in numpy. Further, while A**B is not so common, A**n is quite common (for integral n, in the sense of repeated matrix multiplication). So a matrix multiplication operator really should come with a power operator cousin. Matlab uses * for matrix and .* for elementwise multiplication. Introducing .* for elementwise multiplication in Python would not be compatible with existing numpy code, and introducing .* with the reversed meaning of Matlab would be *very* confusing :-) Maple uses &* for matrix multiplication. However, Maple's syntax is not a good style reference for anything. Besides those alternatives and the regular *, I don't know any other ASCII operators used by existing mathematical software for matrix multiplication. Well, Fortress probably has some unicode symbol for it (I suppose that would be one desperate possibility). Fredrik _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com