<div dir="ltr"><div><div><div><div><div><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br></div><div class="gmail_extra">0. </div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div class="gmail_extra"><div class="gmail_extra"><font face="monospace, monospace">while (items[i := i+1] := read_next_item()) is not None:</font></div></div><div class="gmail_extra"><div class="gmail_extra"><font face="monospace, monospace">    print(r'%d/%d' % (i, len(items)), end='\r')</font></div><div class="gmail_extra"><br></div></div></blockquote>1.<div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div><font face="monospace, monospace">while (read_next_item() -> items[(i+1) -> i]) is not None:</font></div><div><font face="monospace, monospace">    print(r'%d/%d' % (i, len(items)), end='\r')</font></div></div></blockquote></div><div>2.</div><div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div><font face="monospace, monospace">while (item := read_next_item()) is not None:</font></div><div><font face="monospace, monospace">    items[i := (i+1)] = item</font></div><div><font face="monospace, monospace">    print(r'%d/%d' % (i, len(items)), end='\r')</font></div></div></blockquote></div><div>3.</div><div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div><font face="monospace, monospace">while (read_next_item() -> item) is not None:</font></div><div><font face="monospace, monospace">    items[(i+1) -> i] = item</font></div><div><font face="monospace, monospace">    print(r'%d/%d' % (i, len(items)), end='\r')</font></div></div></blockquote></div><div>4.</div><div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div><font face="monospace, monospace">while (item := read_next_item()) is not None:</font></div><div><font face="monospace, monospace">    i = i+1</font></div><div><font face="monospace, monospace">    items[i] = item</font></div><div><font face="monospace, monospace">    print(r'%d/%d' % (i, len(items)), end='\r')</font></div></div></blockquote></div><div>5. </div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div><font face="monospace, monospace">while (read_next_item() -> item) is not None:</font></div></div><div><div><font face="monospace, monospace">    i = i+1</font></div></div><div><div><font face="monospace, monospace">    items[i] = item</font></div></div><div><div><font face="monospace, monospace">    print(r'%d/%d' % (i, len(items)), end='\r')</font></div></div><div><br></div></blockquote></div></blockquote><div> </div>Also 2 or 3.<br></div>The 3rd one is in the order of natural language, just like:<br></div>    while get then next item and assign it to `item`, if it's not None, do some stuff.<br><br></div>However just as we have pointed out, the semantics of '->' is quite different from the cases it's currently used at, so it should be handled much more carefully.<br><br></div><div>I think maybe we can use unicode characters like ≜
(\triangleq) and add the support of unicode completion to python repl. The unicode completion of editors or ides has been quite mature.<br></div><br></div></div><div>     <br></div></div>