-1.

While the syntax has a basic beauty, it requires too much odd explanation.
"*" and "**" are already binary operators.
The '*' unary operator can confuse migrating programmers already.
It makes puzzles too easy, e.g.,  yield **[2**3*i, for i in range(2*3**4)]




On Sat, Mar 15, 2008 at 6:55 PM, Phillip J. Eby <[EMAIL PROTECTED]> wrote:
> At 06:33 PM 3/15/2008 -0500, Michael Urman wrote:
>  > > > I'm not sure how to solve this except by adopting a different syntax
>  > > > for the multiple-yield. Perhaps
>  > > >
>  > > > *yield x
>  > >
>  > > If there really were an inconsistency here, I would certainly not suggest
>  > > fixing it that way, yuuueghh.
>  >
>  >Agreed about *yield looking yucky. In a previous thread somewhere
>  >around http://mail.python.org/pipermail/python-dev/2006-January/059955.html
>  >a construct like "yield from x" was offered. It certainly helps
>  >clarify the difference between iteratively yielding the values from
>  >another iterator and yielding the values of an iterator as a tuple.
>  >While parsing rules do differentiate, I don't find the behavior
>  >obvious, and expect the differences between
>  >     yield *x; yield *x(); yield *x,; yield (*x,); and yield *(x,)
>  >would become one of python's warts in a few years, if adopted.
>
>  After following this thread for a bit, I think it's a wart
>  already.  :)  The potential for confusion with the other *assign
>  target idea is too high.
>
>  I don't have a problem with "item for *item,val in blah", but "*item
>  for item in blah" makes my head hurt.  Why not just say "i2 for i1 in
>  blah for i2 in i1"?  Yes, it's a bit more verbose, but not frequent
>  enough to justify the *, and you can tell what's going on by
>  textually transposing to the nested for loops.  Plus, it works for
>  any depth.  What are you going to do if it's triple-nested?  Use
>  **?  What about ***?  Where does it end?
>
>  So I think "yield *" and "*item for item in..." are broken for the
>  same reason.  In the function call use case, and in simple
>  assignment, it is treated as a literal quasi-textual
>  expansion.  However, such an expansion in the yield case would yield
>  a tuple, and the literal expansion in the comprehension case would
>  make no sense.  (If done by true textual substitution, it would have
>  to be a syntax error.)
>
>  And I think that a quasi-textual substitution is the right mental
>  model for * expressions, as it's simple to explain and easy to reason
>  out what happens.
>
>
>
>  _______________________________________________
>  Python-3000 mailing list
>  Python-3000@python.org
>  http://mail.python.org/mailman/listinfo/python-3000
>  Unsubscribe: 
> http://mail.python.org/mailman/options/python-3000/charles.merriam%40gmail.com
>
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to