On Sat, Mar 15, 2014 at 1:01 PM, Alexander Belopolsky <ndarray@mac.com> wrote:

On Sat, Mar 15, 2014 at 2:25 PM, Alexander Belopolsky <ndarray@mac.com> wrote:
On Fri, Mar 14, 2014 at 11:41 PM, Nathaniel Smith <njs@pobox.com> wrote:
Here's the main blocker for adding a matrix multiply operator '@' to Python: we need to decide what we think its precedence and associativity should be.

I am not ready to form my own opinion, but I hope the following will help shaping the discussion.

One more question that I think should be answered by the PEP and may influence the associativity decision is what happens if in an A @ B @ C expression, each operand has its own type that defines __matmul__ and __rmatmul__?  For example, A can be an ndarray, B a sympy expression and C a pyoperator.

My impression is that the pyoperator folks would prefer right associativity as it corresponds to function composition, which also proceeds right to left. I don't think the sympy folks have expressed and opinion, except perhaps that they are more in the sage camp where matrices are symbolic, and not to be confused with arrays. That is, they don't depend on having two operators, one for the Hadamard product and another for the matrix product.