[prev in list] [next in list] [prev in thread] [next in thread]
List: lua-l
Subject: Re: Non-linear lexical scoping (again) and an idea about __unset
From: Tim Hill <drtimhill () gmail ! com>
Date: 2019-06-29 22:23:40
Message-ID: 09F46837-3B99-4FE9-AA6C-A731E94641A1 () gmail ! com
[Download RAW message or body]
> On Jun 26, 2019, at 1:27 PM, Soni They/Them L. <fakedme@gmail.com> wrote:
>
> okay so a while back I talked about this "unset foo" idea, that would allow you to \
> get through to shadowed names.
> the example I gave was basically:
>
> local foo = 1
> do
> local foo = 2
> do
> unset foo
> foo = 3
> end
> assert(foo == 2)
> end
> assert(foo == 3)
>
> (I don't remember the exact examples I gave but I like this one.)
>
> anyway, nobody liked it back then and I don't expect anyone to like it now.
>
> but since we're talking about __close and toclose and stuff, why not use __unset \
> instead? it's called when a variable is unset i.e. goes out of scope. (as long as \
> we don't get the ability to unset variables like I proposed with non-linear lexical \
> scoping, at least.)
> it still doesn't solve the "what to name the <toclose>" problem, but, I'd prefer \
> __unset over __close, personally. (ideally we'd also have a __set for when the \
> value is assigned to one of those special variables, but I digress.)
I'm sure this was asked before. What is the use-case for this? What problem does it \
solve? My feeling is that any actually need for this is probably an indication of bad \
software design/coding. In general, you should only be reaching "outwards" into \
scopes that you understand and control .. and if you understand and control them, \
then all you need to do it rename the inner locals. And if you dont control them, you \
are really taking a risk accessing them.
—Tim
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic