<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div dir="auto">Hello, I would like to propose an idea for the language but I don't know where I can talk about it.
<div dir="auto"><br>
</div>
<div dir="auto">In a nutshell, I would like to be able to write:</div>
<div dir="auto">y = (b+2 for b = a + 1)</div>
<div dir="auto"><br>
</div>
<div dir="auto">Or in list comprehension:</div>
<div dir="auto">Y = [b+2 for a in L for b = a+1]</div>
<div dir="auto"><br>
</div>
<div dir="auto">Which can already be done like this:</div>
<div dir="auto">Y = <span style="font-family:sans-serif">[b+2 for a in L for b in [a+1]]</span></div>
<div dir="auto"><span style="font-family:sans-serif"><br>
</span></div>
<div dir="auto"><span style="font-family:sans-serif">Which is less obvious, has a small overhead (iterating over a list) and get messy with multiple assignment:</span></div>
<div dir="auto"><span style="font-family:sans-serif">Y = </span><span style="font-family:sans-serif"> [b+c+2 for a in L for b,c in [(a+1,a+2)]]</span></div>
<div dir="auto"><span style="font-family:sans-serif"><br>
</span></div>
<div dir="auto"><span style="font-family:sans-serif">New syntax would allow to write:</span></div>
<div dir="auto"><span style="font-family:sans-serif">Y = </span><span style="font-family:sans-serif"> [b+c+2 for a in L for b,c = (a+1,a+2)]</span></div>
<div dir="auto"><span style="font-family:sans-serif"><br>
</span></div>
<div dir="auto"><span style="font-family:sans-serif">The parenthesis are needed for syntax reason I think.</span></div>
<div dir="auto"><span style="font-family:sans-serif"><br>
</span></div>
<div dir="auto"><span style="font-family:sans-serif">One could have successive assignements</span></div>
<div dir="auto"><span style="font-family:sans-serif"><br>
</span></div>
<div dir="auto">
<div dir="auto" style="font-family:sans-serif">My first example (b+2 for b = a+1) can already be done using ugly syntax using lambda</div>
<div dir="auto" style="font-family:sans-serif"><br>
</div>
<div dir="auto" style="font-family:sans-serif">y = (lambda b: b+2)(b=a+1)</div>
<div dir="auto" style="font-family:sans-serif">y = (lambda b: b+2)(a+1)</div>
<div dir="auto" style="font-family:sans-serif">y = (lambda b=a+1: b+2)()</div>
<div dir="auto" style="font-family:sans-serif"><br>
</div>
<div dir="auto" style="font-family:sans-serif">Choice of syntax: for is good because it uses current keyword, and the analogy for x = 5 vs for x in [5] is natural.</div>
<div dir="auto" style="font-family:sans-serif"><br>
</div>
<div dir="auto" style="font-family:sans-serif">But the "for" loses the meaning of iteration.</div>
<div dir="auto" style="font-family:sans-serif">The use of "with" would maybe sound more logical.</div>
<div dir="auto" style="font-family:sans-serif"><br>
</div>
<div dir="auto" style="font-family:sans-serif">Python already have the "functional if", lambdas, list comprehension, but not simple assignment functional style.</div>
</div>
</div>
</body>
</html>