Kevin Ryde on Tue, 10 Nov 2015 09:22:20 +0100

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Vector of args

Bill Allombert <> writes:
> If f is variadic,  the variadic arguments must grouped in a vector in the
> last component of A.

I'm trying to gently persuade Bill not to do this bit.  What does
anyone else think?

I would like call(f,[1,2,3]) for either f plain function or variadic.
I think in general-purpose code you often won't know which some f might
be, and even if you do then you'd prefer not to know for the sake of
uniformity, protection against future change to f, etc.  Otherwise if
code wants to allow both f then if I'm not mistaken it would have to
resort to maybe if(isvariadic(f),call(f,[v]),call(f,v)).

The call(f,[1,2,[3]]) on variadic is a shortcut for prepending args in
something like fprintf dispatching to Strprintf.  I think I might have
mentioned fprintf early on so I'm to blame for putting it in mind :-).
But I think not every call to a variadic will always want that, and as I
say it makes generality rather harder.

(Could contemplate a Vstrprintf(format,vector_of_args) as a helper for
new printf-like.  That wouldn't need a call().  Dunno how much use it
would get, and doesn't do anything Strprintf doesn't already, but if
it's almost-but-not-quite how the underlying C code is ... :)