[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Parameterized modules
- From: Luke Gorrie <lukego@...>
- Date: Mon, 15 Apr 2013 10:59:51 +0200
Thanks Tim for the thoughtful reply.
> 1. Use a table to maintain the state, and pass to functions as necessary.
> 2. As above, but make the functions methods and use the ":" syntactic sugar.
> 3. In Lua 5.2, you can manipulate _ENV so that each function thinks it is
> the only device (this is just a variation on #1 with tricky playing with
> globals).
> 4. Use upvalues and closures with a factory.
Could you link an example of #3? I think it's equivalent to what I am
doing and maybe I can take some ideas for my code.
> Of these choices, #4 is the most efficient, since it places the state in upvalues
I am happy enough taking the table-lookup hit by default provided I
can easily switch to upvalues if profiling suggests this would be a
good idea.
This seems to be easy in my code: if there would be 5 functions that I
want to move to upvalues then I can write "local f1,f2,f3,f4,f5" at
the top of my source file and it will be done. (I think :-))
I resist making everything local mostly because I prefer to write my
source files with the callers first and the callees last. For me this
luxury is worth creating a little bit of extra performance profiling
work.
I will have to revisit all of these issues soon when I want to deal
with dynamic code reloading as in Emacs/Erlang...
Cheers,
-Luke