(rontolisp) docs
← Macros

multiple-value-call

(multiple-value-call function values-form...)

Calls function with all values of every values-form as the arguments. The function is evaluated first, then the producers left to right; each producer is recognized like in multiple-value-bind, including a user function whose result is a (values ...) call, whose values are spread at runtime — a compiled program using multiple-value-call therefore embeds the runtime eval support, like apply (deviates from CL: classified as a macro, not a special operator). Built-in function values passed as function are synthesized wrappers: the naturally variadic operators (#'+, #'-, #'*, #'/, #'list, #'min, #'max) accept any argument count, but every other multi-argument built-in keeps a fixed wrapper arity (e.g. #'cons and the comparison chains are binary); use a user-defined function or a lambda for other arities.