funcall
function &rest args ⇒ {result}*
function | a function designator. |
args | arguments to the function. |
results | the values returned by the function. |
funcall applies function to args.
If function is a symbol, it is coerced to a function as if by finding its functional value in the global environment.
(funcall #'+ 1 2 3) ⇒ 6
(funcall 'car '(1 2 3)) ⇒ 1
(funcall 'position 1 '(1 2 3 2 1) :start 1) ⇒ 4
(cons 1 2) ⇒ (1 . 2)
(flet ((cons (x y) `(kons ,x ,y)))
(let ((cons (symbol-function '+)))
(funcall #'cons
(funcall 'cons 1 2)
(funcall cons 1 2))))
⇒ (KONS (1 . 2) 3)
An error of type undefined-function should be signaled if function is a symbol that does not have a global definition as a function or that has a global definition as a macro or a special operator.
apply, function, Evaluation
(funcall function arg1 arg2 ...)
≡ (apply function arg1 arg2 ... nil)
≡ (apply function (list arg1 arg2 ...))
The difference between funcall and an ordinary function call is that in the former case the function is obtained by ordinary evaluation of a form, and in the latter case it is obtained by the special interpretation of the function position that normally occurs.