Re: variadic function support

"Florian G. Pflug" <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.patches
Message-ID <[email protected]>
Pavel Stehule wrote:
>> One issue that just occurred to me: what if a variadic function 
>> wants to turn around and call another variadic function, passing 
>> the same array argument on to the second one?  This is closely akin
>>  to the problem faced by C "..." functions, and the solutions are 
>> pretty ugly (sprintf vs vsprintf for instance).  Can we do any 
>> better?  At least in the polymorphic case, I'm not sure we can :-(.
>>  maybe with some flag like PARAMS?
> 
> SELECT least(PARAMS ARRAY[1,2,3,4,5,6])

Just FYI, this is more or less how ruby handles variadic functions - a
"*" before the last argument in the function's *definition* causes all
additional arguments to be stored in an array, while a "*" before the
last argument in a function *call* expands an array into single arguments.

So, you could e.g do
def variadic1(a, b, *c)
   # c is in array containing all parameters after second one.
end

def variadic_wrapper(a, *b)
   variadic1("foobar", a, *b)
end

So there is precedent for the "flag idea" too. Plus, I kind of like the
idea of using the same syntax for both wrapping and unwrapping of 
variadic arguments.

regards, Florian Pflug


-- 
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.