Bill Allombert on Wed, 31 Jul 2013 12:34:35 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
variadic GP functions |
Dear developers, I have created a GIT branch 'bill-vararg' which allow to create GP functions that take a variable number of arguments. The syntax is as follow: f(a[..])=sum(i=1,#a,a[i]); declare a GP function that take a variable number of arguments and return their sums: ? f(1,2,3) %2 = 6; the variable a evaluates to the vector of the argument. It is possible to add extra argument at the start: g(s,a[..])=s*sum(i=1,#a,a[i]); ? g(2,3,4) %4 = 14 As a side effect of the implementation, it is valid to call apply(f,...) and select(f,...) on a vector of vector of arguments: ? apply(f,[[2,3],[3,4,5]]) %5 = [5, 12] We might want to provide non-variadic versio of the built-in variadic functions (print, printf, Strprintf, etc) to allow to use them to build variadic functions like printtime(t,f,a[..])=printf("Time %s: %d\n", vStrprintf(f,a), t) We could also provide a way to convert variadic functions to non-variadic. Currently this is possible for GP functions using vtonv(f)=v->apply(f,[v])[1] ? vtonv(f)([3,4,5]) %9 = 12 Cheers, Bill