<div dir="auto"><p dir="ltr">Hello Chris and Rob,</p><p dir="ltr">did you compare your proposal tothe subject called "[Python-ideas] Temporary variables in comprehensions" on this month list ?</p><p dir="ltr">If you don't want to go through all the mails, I tried to summarize the ideas in this mail : <a href="https://mail.python.org/pipermail/python-ideas/2018-February/048987.html" target="_blank">https://mail.python.org/<wbr>pipermail/python-ideas/2018-<wbr>February/048987.html</a></p><p dir="ltr">In a nutshell one of the proposed syntax was </p><p dir="ltr">stuff = [(y, y) where y = f(x) for x in range(5)]</p><p dir="ltr">Or with your choice of keyword,</p><p dir="ltr">stuff = [(y, y) with y = f(x) for x in range(5)]</p><p dir="ltr">Your proposal uses the *reverse* syntax :</p><p dir="ltr">stuff = [(y, y) with f(x) as y for x in range (5)]</p><p dir="ltr">Your syntax was already proposed in 2008 and you can see in the response to my mail (<a href="https://mail.python.org/pipermail/python-ideas/2018-February/049000.html" target="_blank">https://mail.python.org/<wbr>pipermail/python-ideas/2018-<wbr>February/049000.html</a>)</p><p dir="ltr">The first example with the "where y = f(x)" can already be compiled on a CPython branch called "where-expr" on <a href="https://github.com/thektulu/cpython/commit/9e669d63d292a639eb6ba2ecea3ed2c0c23f2636" target="_blank">https://github.com/<wbr>thektulu/cpython/commit/<wbr>9e669d63d292a639eb6ba2ecea3ed2<wbr>c0c23f2636</a></p><p dir="ltr">You can see all the conversation on subject "Tempory variables in comprehensions" on <span style="font-family:sans-serif"><a href="https://mail.python.org/pipermail/python-ideas/2018-February/thread.html#start" target="_blank">https://mail.python.org/<wbr>pipermail/python-ideas/2018-<wbr>February/thread.html#start</a></span></p><p dir="ltr">I wish I could write a pep to summarize all the discussions (including yours, my summary, including real world examples, including pro's and con's), or should I do a gist on GitHub so that we can talk in a more "forum like" manner where people can edit their answers and modify the document ? This mailing is driving me a bit crazy.</p><p dir="ltr">As Rob pointed out, your syntax "(f(x) as y, y)" is really assymmetric and "(y, y) with f(x) as y" or "(y, y) with y = f(x)" is probably prefered. Moreover I agree with you the choice of "with" keyword could be confused with the "with f(x) as x:" statement in context management, so maybe "with x = f(x)" would cleary makes it different ? Or using a new keyword like "where y = f(x)", "let y = f(x)" or probably better "given y = f(x)", "given" isn't used in current librairies like numpy.where or sql alchemy "where".</p><p dir="ltr">In the conversation, a lot of people wanted real world examples where it's obvious the new syntax is better.</p><div class="gmail_extra" dir="auto">Cheers,</div><div class="gmail_extra" dir="auto"><br></div><div class="gmail_extra" dir="auto">Robert</div></div>