[Python-Dev] Infix operators

Greg Ewing greg.ewing at canterbury.ac.nz
Thu Jul 24 05:21:07 CEST 2008


Josiah Carlson wrote:
> What the heck does 'x = 4 $ 6' mean in Python?  Oh, that's right, it's
> a custom infix operator.  But where is it defined?

It's not quite as bad as that -- it would be defined by
the relevant operator method on one of the operands. But
a convention would be needed for mapping arbitary non-
alphanumeric sequences to method names, and it's not
obvious how to do that.

But the main technical problem I see is that of precedence.
It would have to be declared somehow, or a declaration
imported from another module. If it's imported, then
parsing a module can't be done in isolation any more,
since it depends on the contents of other modules.
Things could get very messy.

> Really though, PEP 211 was a perfect example of a k-line function that
> someone attempted to make syntax that really didn't need to be syntax.

It looks like a case of someone wanting a matrix multiplication
operator in numpy, and then hunting around for something to
make it mean in Python.

I would actually be in favour of adding a matrix multiplication
operator, but I would make it mean matrix multiplication in
Python as well, operating on anything that can be treated as
a 2D sequence.

Why matrix multiplication in particular? Because it's the one
thing that you do all the time with matrices for which there
isn't an available operator. I think this one addition could
be justified on the grounds of very wide usage.

-- 
Greg


More information about the Python-Dev mailing list