Function FUNCALL
funcall
function &rest args => result*
function - 関数指定子
args - functionの引数
result - functionの返却値
funcall
は、argsを引数にfunctionを実行します。 もしfunctionがシンボルなら、 functionをグローバル環境下の関数の値として探したものを 強制的に変換します。
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)
なし。
functionがシンボルであり、 それがグローバル定義の関数を持たなかったときか、 あるいはグローバルなマクロか特殊オペレーターであったときは、 型undefined-function
のエラーが発生します。
funcall function arg1 arg2 ...)
(apply function arg1 arg2 ... nil)
== (apply function (list arg1 arg2 ...)) == (
funcall
と通常の関数呼び出しの違いは、 前者はフォームの通常の評価によってfunctionを取得しますが、 後者は普通に起こる関数の位置の特別な解釈によって得られます。