[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Backport of Lua 5.2 "in" scoping (was Re: Lua registry, environment, and threads.)
- From: Mike Pall <mikelu-1001@...>
- Date: Fri, 8 Jan 2010 17:16:09 +0100
Matthew Wild wrote:
> I'm interested whether the patch is correct. From the other thread I
> thought I understood that functions would stop using the environment
> they were defined in by default, and instead the environment they are
> called in. Such that this simple example would fail (due to lack of
> print in env):
>
> function sayhello() print("Hello") end
> env = { sayhello = sayhello }
> in env do sayhello() end
>
> Am I wrong in my understanding? If so then the change really has less
> consequences than I first thought.
The term "lexical scoping" implies a static effect on the definition and
not a dynamic effect on calls.
Even when you move the definition inside the scope, there is no
change due to this patch. The description lacks details on how
environment inheritance is implemented.
Using the scope as the closure environment would need a change to
the bytecode since OP_CLOSURE always copies the environment from
it's calling function (and has no free argument left).
When/if the Rio oracle speaks again, I'll provide an exegesis in
the form of a modified patch ... :-)
--Mike
- References:
- Re: Lua registry, environment, and threads., Roberto Ierusalimschy
- Re: Lua registry, environment, and threads., Christian Tellefsen
- Re: Lua registry, environment, and threads., Roberto Ierusalimschy
- Re: Lua registry, environment, and threads., Mark Hamburg
- Re: Lua registry, environment, and threads., Patrick Donnelly
- Re: Lua registry, environment, and threads., Roberto Ierusalimschy
- Re: Lua registry, environment, and threads., Enrico Colombini
- Re: Lua registry, environment, and threads., Roberto Ierusalimschy
- Backport of Lua 5.2 "in" scoping (was Re: Lua registry, environment, and threads.), Mike Pall
- Re: Backport of Lua 5.2 "in" scoping (was Re: Lua registry, environment, and threads.), Matthew Wild