Chris Angelico writes:
> Possibly a better example would be path division in Python,
I would have chosen '+' for that operation for the same reason '+'
"just works" for sequences. It's a very specialized use case but
5 * pathlib.Path('..') / "foo"
makes sense as an operation but oh, the cognitive dissonance! It's so
specialized that <0.99 wink>. '/' is fine for pathlib, and I trust
Antoine's intuition that it will "work" for (rather than against ;-)
pathlib users.
> or stream left/right shift in C++.
I'm very sympathetic to your argument for this one.
> Is that abuse of notation or something else?
As I wrote earlier, I don't think "abuse of notation" is a useful
analogy here.
> Whatever it is, it's not
> "operator overloading" in its normal sense; division is normally the
> inverse of multiplication, but there's no way you can multiply that by
> "quux" to undo that last operation,
But if you spell it '+',
pathlib.Path("/") + "foo" + "bar" + "quux" - "bar"
makes some sense, modulo the definition of the case with multiple
"bar". I don't argue it's useful, just interpretable without head
explosion.
> Maybe we need a different term for this kind of overloading, where
> we're not even TRYING to follow the normal semantics for that
> operation, but are just doing something because it "feels right".
"Overloading" for this case doesn't bother me, but if you want to
introduce a new term, Greg Ewing's "operator repurposing" WFM.
Steve
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/5GUDGYNX56LXLDCDD4EXJDQTVTGBNWOX/
Code of Conduct: http://python.org/psf/codeofconduct/