npt-japanese

% Function FUNCALL

UP


Function FUNCALL

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のエラーが発生します。

参考

apply, function, 3.1. 評価

備考

(funcall function arg1 arg2 ...)
==  (apply function arg1 arg2 ... nil)
==  (apply function (list arg1 arg2 ...))

funcallと通常の関数呼び出しの違いは、 前者はフォームの通常の評価によってfunctionを取得しますが、 後者は普通に起こる関数の位置の特別な解釈によって得られます。


TOP, Github