[Python-ideas] Inline assignments using "given" clauses

Peter O'Connor peter.ed.oconnor at gmail.com
Sun May 13 05:21:24 EDT 2018


  target := expr
  expr as target
  expr -> target
  target given target = expr
  let target = expr
 : target expr ;


Although in general "target:=exp" seems the most palatable of these to me,
there is one nice benefit to the "given" syntax:

Suppose you have a comprehension wherein you want to pass forward an
internal "state" between iterations, but not return it as the output:

In today's python, you'd to:

    outputs = []
    state = initial_state
    for inp in inputs:
        out, state = my_update_func(state)
        outputs.append(state)

This could not be neatly compacted into:

    state = initial_state
    outputs = [out given out, state = my_update_func(inp, state) for inp in
inputs]

Or maybe:

    outputs = [out given out, state = my_update_func(inp, state) for inp in
inputs given state=initial_state]

Though I agree for the much more common case of assigning a value inline "x
given x=y" seems messily redundant.



On Sat, May 12, 2018 at 10:37 PM, Stephen J. Turnbull <
turnbull.stephen.fw at u.tsukuba.ac.jp> wrote:

> David Mertz writes:
>
>  > Only the BDFL has a vote with non-zero weight.
>
> "Infinitesimal" != "zero".
>
> Pedantically yours,
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180513/5e224611/attachment.html>


More information about the Python-ideas mailing list