Lisp function for evaluating a function on some arguments.
(funcall func arg1 ... argk)
computes the same as
(func arg1 ... argk)
, except that the latter is not legal Lisp (it is legal Scheme
, though, which explains why Scheme doesn't have funcall
) -- it doesn't need it.
The difference between funcall and apply is in the fixed number of arguments funcall passes. This might help the compiler better optimise code (and report errors).
(funcall func arg1 ... argk) is always the same as
(apply func arg1 ... argk nil), except that it might be more efficient and is definitely clearer.