
On Wed Jan 27 15:49:12 EST 2016, Andrew Barnert wrote:
both C# and Ruby made breaking changes from the Python behavior to the Swift behavior, because they couldn't find any legitimate code that would be broken by that change. And there have been few if any complaints since. If we really are considering adding something like "for let", we should seriously consider whether anyone would ever have a good reason to use "for" instead of "for let". If not, just change "for" instead.
The first few times I saw this, I figured Python had a stronger (and longer) backwards compatibility guarantee. But now that I consider the actual breakage, I'm not so sure... >>> for i in range(10): print (i) i=i+3 print(i) i is explicitly changed, but it doesn't affect the flow control -- it gets reset to the next sequence item as if nothing had happened. It would break things to hide the final value of i after the loop is over, but that isn't needed. I think the only way it even *could* matter is if the loop variable is captured in a closure each time through the loop. What would it look like for the current behavior to be intentional? >>> for cache in (4, 5, 6, {}): def f(): cache['haha!'] = "I know only the last will really get used!" funcs.append(f) -jJ -- If there are still threading problems with my replies, please email me with details, so that I can try to resolve them. -jJ