On Wed, Aug 30, 2017 at 9:44 AM, Yury Selivanov <yselivanov.ml at gmail.com> wrote: [..] >> FYI, I've been sketching an alternative solution that addresses these kinds >> of things. I've been hesitant to post about it, partly because of the >> PEP550-based workarounds that Nick, Nathaniel, Yury etc. have been >> describing, and partly because that might be a major distraction from other >> useful discussions, especially because I wasn't completely sure yet about >> whether my approach has some fatal flaw compared to PEP 550 ;). > > We'll never know until you post it. Go ahead. The only alternative design that I considered for PEP 550 and ultimately rejected was to have a the following thread-specific mapping: { var1: [stack of values for var1], var2: [stack of values for var2] } So the idea is that when we set a value for the variable in some frame, we push it to its stack. When the frame is done, we pop it. This is a classic approach (called Shallow Binding) to implement dynamic scope. The fatal flow that made me to reject this approach was the CM protocol (__enter__). Specifically, context managers need to be able to control values in outer frames, and this is where this approach becomes super messy. Yury
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