[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: global environment special case
- From: David Jeske <jeske@...>
- Date: Tue, 18 Apr 2000 23:39:10 -0700
I don't usually "me too", but in this case I have to agree. I've had
the same feeling ever since I became involved in Lua.
On Wed, Apr 19, 2000 at 03:10:19AM -0300, John Belmonte wrote:
>
> Recently I've been toying around with an implementation of overloaded
> functions in Lua. I ran into an issue that must be well-known by anyone
> working on Lua extensions. I found that at the lowest level I need to
> provide two implementations for everything: one for the global environment
> and another for tables.
>
> Since the table data type is used so effectively to keep Lua simple and
> powerful, it made me wonder why use of tables wasn't extended as far as the
> global environment. In other words why does a programmer implementing
> extensions have to treat the global environment as a special case?
>
> The solution I'm thinking about is to keep current Lua semantics intact, but
> remove all the global operations (listed below) from the language. Then add
> just one function to get a global table value, say globaltable().
>
>
> global operation table "equivalent"
> ---------------- ------------------
> setglobal() {table access syntax}
> getglobal() {table access syntax}
> rawsetglobal() rawgettable
> rawgetglobal() rawsettable
> foreachvar() foreach
> nextvar() next
> setglobal tagmethod settable tagmethod - roughly
> getglobal tagmethod gettable tagmethod - roughly
>
>
> By making this change the Lua language and documentation would be
> simplified, and I believe the complexity of implementing extensions would be
> reduced.
>
> It doesn't seem there would be much of a performance hit. Furthermore for
> backward compatibility, all the global operation functions could be
> re-implemented using the table equivalents, and the "getglobal" and
> "setglobal" tags emulated. I'm sure that I must be overlooking something...
> what is it?
>
> It looks possible to run through an implementation of this within Lua itself
> without changing any source code. Before I run down that road I thought it
> would be good to entertain some criticism.
>
>
> -John Belmonte
>
>
--
David Jeske (N9LCA) + http://www.chat.net/~jeske/ + jeske@chat.net