<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    On 06.07.2018 7:02, Chris Angelico wrote:<br>
    <blockquote type="cite"
cite="mid:CAPTjJmp0D9-eL3LzY=eP1RRBXATRV5nj2xcwHUUrrpyoNUnLYA@mail.gmail.com">
      <pre wrap="">On Fri, Jul 6, 2018 at 12:48 PM, Alexander Belopolsky
<a class="moz-txt-link-rfc2396E" href="mailto:alexander.belopolsky@gmail.com"><alexander.belopolsky@gmail.com></a> wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="">
Python really has a strong C legacy and this is the area where I agree that
C designers made a mistake by picking a symmetric symbol (=) for an
asymmetric operation. On top of that, they picked an asymmetric digraph (!=)
for a symmetric operation as well and Python (unfortunately) followed the
crowd and ditched a much better alternative (<>).  My only hope is that
Python 4.0 will allow ← to be used in place of either = or :=. :-)
</pre>
      </blockquote>
      <pre wrap="">
Interesting. Looking over Python's binary operators, we have:

|, ^, &, +, *: symmetric (on ints)
-, /, //, **: asymmetric
<, >: mirrored operations
<=, >=: mirrored operations but not reflected
<<, >>: non-mirrored asymmetric
and, or: technically asymmetric but often treated as symmetric
in, not in: asymmetric
is, is not: symmetric

Which ones ought to have symmetric symbols, in an ideal world? Should
<= and >= be proper mirrors of each other? Are << and >> confusing? Is
it a problem that the ** operator is most decidedly asymmetric?

Personally, I'm very happy that the operators use the same symbols
that they do in other languages - U+002B PLUS SIGN means addition, for
instance - and everything else is secondary. But maybe this is one of
those "hidden elegances" that you're generally not *consciously* aware
of, but which makes things "feel right", like how Disney's "Moana" has
freedom to the right of the screen and duty to the left. Are there
languages where symmetric operations are always represented with
symmetric symbols and vice versa?
</pre>
    </blockquote>
    <br>
    Nothing like that.<br>
    The connotations for the symbols rather draw from other fields that
    we're familiar with.<br>
    <br>
    Primarily math (that everyone has studied at school -- this is also
    the reason why we use infix notation even though the postfix one
    allows to ditch braces);<br>
    in particular, % draws from ÷ (division sign), / from fraction sign;<br>
    & is from English;<br>
    !, | and ^ are a mash from "the closest unused symbols on keyboard"
    to symbols from logic algebra:<br>
       ¬  (<a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Negation">https://en.wikipedia.org/wiki/Negation</a>),<span
      class="mwe-math-element"><span class="mwe-math-mathml-inline
        mwe-math-mathml-a11y" style="display: none;"><math
          xmlns="http://www.w3.org/1998/Math/MathML">
          <semantics>
            <mrow>
              <mstyle displaystyle="true" scriptlevel="0">
                <mo>∨</mo> </mstyle> </mrow>
            <annotation encoding="application/x-tex">{\displaystyle \lor
              }</annotation></semantics></math></span></span><br>
      ∨ (<a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Logical_disjunction">https://en.wikipedia.org/wiki/Logical_disjunction</a>),<br>
    <span class="texhtml">  ∧
      (<a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Logical_conjunction">https://en.wikipedia.org/wiki/Logical_conjunction</a>),</span><br>
     ↑ or | (<a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Sheffer_stroke">https://en.wikipedia.org/wiki/Sheffer_stroke</a>),<br>
     ↓ (<a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Peirce's_arrow">https://en.wikipedia.org/wiki/Peirce's_arrow</a>);<br>
    <br>
    "!=" reads literally "not equal" ( ! is "not", = is "equal" )<br>
       (while "<>" reads "less or greater" which is mathematically
    not equivalent to that: not everything has a defined ordering
    relation. "<>" draws from BASIC AFAIK which was geared towards
    regular users who don't deal with advanced mathematics.)<br>
    <br>
    <blockquote type="cite"
cite="mid:CAPTjJmp0D9-eL3LzY=eP1RRBXATRV5nj2xcwHUUrrpyoNUnLYA@mail.gmail.com">
      <pre wrap="">
ChrisA
_______________________________________________
Python-Dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Python-Dev@python.org">Python-Dev@python.org</a>
<a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/listinfo/python-dev">https://mail.python.org/mailman/listinfo/python-dev</a>
Unsubscribe: <a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/options/python-dev/vano%40mail.mipt.ru">https://mail.python.org/mailman/options/python-dev/vano%40mail.mipt.ru</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>