A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-February/033140.html below:

[Python-Dev] Trinary Operators

[Python-Dev] Trinary OperatorsGary Herron gherron@islandtraining.com
Thu, 6 Feb 2003 15:46:51 -0800
On Thursday 06 February 2003 11:49 am, Guido van Rossum wrote:
> > If this is just for fun, why stop with just "trinary"?
>
> (Which BTW is a non-word; the correct term is "ternary".)
>
> > How about one of the following (depending on ease of parsing)?
> > These look even more like list comprehension.
> >
> >   x = (e1 if c1        e2 if c2        e3 if c3  ...  else d)
>
> Doesn't parse.  The concatenation of two expressions is not
> always distinguishable from a single expression: consider c1 = f and
> c2 = (1, 2).
>
> >   x = (e1 if c1  else  e2 if c2  else  e3 if c3  ...  else d)
>
> That works.

Now that I've had a little more time to thing about it, this
suggestion of a n-ary form is nothing more than nested ternary forms
with extra parentheses removed:

 (a1 if c1 else (a2 if c2 else b2))

could be allowed to be written as

  (a1 if c1   else  a2 if c2   else  b2)

and, if you want:

  (a1 if c1 else 
   a2 if c2 else 
   b2)


Other sub-threads of this thread are discussing how to parse these
ternary operators if the parentheses are not required.  I think the
parentheses *should* be required (see below for why) and so it would
be nice to allow this extended form and not require the inner set of
parentheses when doing "tail nesting" (to invent a term).

BEWARE:  UNPYTHONIC UGLINESS FOLLOWS!

On the other hand, if the parentheses are NOT required, we get a whole
host of *UGLY*, absolutely unreadable, nesting possibilities:

  a if b else c if d else e  <==>  (a if b else c) if d else e

and even worse

  a if b if c else d else e  <==>  a if (b if c else d) else e

And what about statements

  if a if b else c if d else e:
    f
  elif g if h if i else j else k:
    l
  else:
    m

Of course, any feature can be abused, but this seems *too* abusable.

Gary Herron




RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4