In order to pass the parameters to the functions, you must first construct an anonymous list on the stack. This is easier than it sounds:
assign(foo, add(list(40, 1, 1, -7, 5, 2)))
The internal add function is overloaded to accept either 2 operands, or a list. In the list case, all the values are summed up and the result is returned. This is a vast improvement over the old syntax:
assign(foo, add(add(add(add(add(40, 1), 1), -7), 5), 2))
Right now I'm in the middle of cleaning up and refactoring the list support implementation, so only a couple of builtin functions can use the list syntax at the moment. My goal for the night is to get all the appropriate functions to support lists.
Assuming that goes well, I should be set to start working on the multiprocessing stuff over the weekend.
Why go add list rather than fold/coalesce/aggregate style function that takes a list and a function?