[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Lightweight function syntax: no need to change Lua
- From: RJ Russell <russellsprouts2@...>
- Date: Sun, 28 Nov 2010 17:46:17 -0800
On Sun, Nov 28, 2010 at 12:42 AM, David Kastrup <dak@gnu.org> wrote:
> Dirk Laurie <dpl@sun.ac.za> writes:
>
>> The following syntax:
>>
>> ('a,b,c')('a+b+c') == function(a,b,c) return a+b+c end
>>
>> is available after doing this chunk:
>>
>> getmetatable("").__call =
>> function(arg,res)
>> if #arg>0 then return load(arg.."=...; return "..res)
>> else return load("return "..res)
>> end
>> end
>>
>> Dirk
>> (Apologies if someone has already pointed out this obvious trick.
>> I started reading the discussion somewhere in the middle.)
>
> It won't exactly work well in the context of closures.
>
> --
> David Kastrup
>
>
>
It could work in 5.2 though, right?
If we use the debug library upvaluejoin function.
I don't have Lua 5.2 compiled on hand, so I can't test it, but I think
that that will work.
We might have to do this:
function test()
local d=56
return ('a,b,c')(_ENV,'print(a,b,c,d)')
end
test()(1,2,3)-->should print 1,2,3,56