Hi. I read the following CVS log from Jeremy: > Fix core dump in example from Samuele Pedroni: > > from __future__ import nested_scopes > x=7 > def f(): > x=1 > def g(): > global x > def i(): > def h(): > return x > return h() > return i() > return g() > > print f() > print x > > This kind of code didn't work correctly because x was treated as free > in i, leading to an attempt to load x in g to make a closure for i. > > Solution is to make global decl apply to nested scopes unless their is > an assignment. Thus, x in h is global. > Will that be the intended final semantic? The more backw-compatible semantic would be for that code to print: 1 7 (I think this was the semantic Guido, was thinking of) Now, if I have understood well, this prints 7 7 but if I put a x=666 in h this prints: 666 7 but the most natural (just IMHO) nesting semantic would be in that case to print: 666 666 (so x is considered global despite the assignement, because decl extends to enclosed scopes too). I have no preference but I'm confused. Samuele Pedroni.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4