On Wed, Sep 2, 2020 at 3:48 AM Stephen J. Turnbull
<turnbull.stephen...@u.tsukuba.ac.jp> wrote:
>
> A digression on abuse of operators, notation, and "abuse of notation".
>
> Steven D'Aprano writes:
>  > On Sun, Aug 30, 2020 at 05:49:50PM +1200, Greg Ewing wrote:
>
>  > > I don't see why we need to pick one use case to bless as the
>  > > official "true" use case.
>  >
>  > We do that for every other operator and operator-like function.
>  >
>  > Operator overloading is a thing, so if you want `a + b` to mean
>  > looking up a database for `a` and writing it to file `b`, you
>  > can. But the blessed use-cases for the `+` operator are numeric
>  > addition and sequence concatenation.
>
> Of course the example is abusive.  But not being "blessed" isn't the
> reason.  (And shouldn't the notation be "b += a" for that operation? ;-)
>

Possibly a better example would be path division in Python, or stream
left/right shift in C++. What does it mean to divide a path by a
string? What does it mean to left-shift std::cout by 5? Those uses
don't make a lot of sense based on the operations involved, but people
accept them because the symbols look right:

>>> pathlib.Path("/") / "foo" / "bar" / "quux"
PosixPath('/foo/bar/quux')

Is that abuse of notation or something else? 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, and nobody would expect so. 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".

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/ZAV7YEBWDL3KBXM2VI6QYV66H4AIV5JW/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to