Vote on PEP 308: Ternary Operator

Beni Cherniavsky cben at techunix.technion.ac.il
Mon Mar 3 09:49:38 CET 2003


On 2003-03-02, Anders Hammarquist wrote:

> Hmm, there was the Q option (fill-in). So if nothing else, you can always
> come up with 3 randomly horrendous syntaxes, and then reject those three.
> Of course, you also have to just how horrendous you syntax is...
>
Hey, that's easy <wink>:

$$
x_\lambda =
\begin{cases}
x & \text{if $\lambda$ is an eigenvalue;}\\
-x & \text{if $-\lambda$ is an eigenvalue;}\\
0 & \text{otherwise.}
\end{cases}
$$

http://www.math.harvard.edu/texman/node26.html#SECTION00089000000000000000

As long as you keep the TeX flavour, it's still unacceptably
unpythonic.  E.g.:

x[l] = cases { x if eigenvalue(l),
               -x if eigenvalue(-1),
               0 otherwise }

Oops, wait, that's not that bad :-).  The ``cases`` keyword can be
omitted and the braces should perhaps become parentheses...

To make it horrendously unaceptable (but readable, after all I'm
mimicing math notation), let's do ascii art <;->:

x[l] = / x  if eigenvalue(l),
       |  -x if eigenvalue(-1),
       \ 0  otherwise

(there is variable number of ``|`` lines; you can't go lower than two
options, since then the construct is redudant).

-- 
Beni Cherniavsky <cben at tx.technion.ac.il>

True elegance has negative overhead so it isn't subject to tradeoffs.






More information about the Python-list mailing list