Sure, it's different for the FFI than for pure Lua. But it sounds like you have a workable (if awkward) solution for FFI use, so if you're looking for a way to expose similar functionality to Lua, there's no need to extend the language, because parameters with reference semantics already exist. /s/ Adam On Mon, Aug 20, 2012 at 8:55 AM, William Adams <william_a_adams@xxxxxxx> wrote: > In my original case, this is about interop to a C function through FFI. > ________________________________ > From: Coda Highland > Sent: 8/19/2012 8:39 PM > To: luajit@xxxxxxxxxxxxx > Subject: Re: Is there an easier way to deal with "inout" parameters > > > I'm going to make a rather simple comment: > > Use a table. > > Remember that tables are passed by reference. So if you want an inout > parameter, consider taking a table as a parameter, and after the call > the table's members will have been mutated appropriately. > > /s/ Adam > > On Sun, Aug 19, 2012 at 8:04 PM, Jay Carlson <nop@xxxxxxx> wrote: >> As lua-l readers are all too aware, I'm interested in language >> meta-extensions with Lua spirit. One of my particular hatreds is writing the >> same thing twice in a row, or having to match up parallel parameter orders. >> The usual examples are >> >> "$pronoun had $jobcount jobs." % {pronoun=pronoun, jobcount=jobcount} >> >> query("SELECT * FROM trips WHERE person=? AND destination=? LEFT INNER >> JOIN ENOUGH sql_nonsense TO KEEP parameters OUT OF shouting_distance", >> "Steven", "Mora") >> >> I have a couple of mechanisms to deal with those. But they're all about >> getting the values of lexical variables *in* to a little language, not how >> to get them out. My proposal below of "buff,len=getvalue(nil,len)" has just >> the repeat-yourself issue particularly irritating to me. So I understand the >> desire behind inout, and I'm now irritated with myself for not poking around >> in that side of the design space. >> >> Jay >> >> On Aug 19, 2012, at 9:04 PM, William Adams wrote: >> >>> Yah, I realize that this is not a practical wish. I could probably be >>> managed for FFI cases, but then the language would start to gain some weird >>> semantic garbage. I guess I'll just have to man up and keep toughing it >>> out. Probably a better scanner/converter could spot these, and come up with >>> proper wrappers where necessary. but, realistically, it happens >>> infrequently enough that all the cases will need to be hand inspected and >>> tuned anyway. >>> >>> =============================== >>>> >>>> This is something a PUC-Rio Lua implementation of ffi would not be able >>>> to do. >>>> >>>> Adding inout for ffi alone seems odd. For consistency, straight Lua >>>> functions should have this ability too. Saaaay, what happens when you put >>>> something which isn't a local lvalue in an inout slot? >>>> >>>> Multiple return values, as in >>>> >>>> buff, len = getvalue(nil, len) >>>> >>>> would not be as nifty, but preserves immutability of parameters, and has >>>> well-defined semantics. >> >> >