Go to the first, previous, next, last section, table of contents.

関数の起動

関数を起動する(最も)一般的な方法は、(ただ)そのリストを評価することです。 evaluator に与えられるリストの car は(全て) 関数オブジェクトを指すものと考えら れ(間接的に指すこともありますが)、アーギュメントに対し適用(訳注:applied to)さ れます。 (呼び出したい)関数が何であるかが前に知られていない(それほど一般的でも ない)場合のために apply と funcall という 2つの関数が与えられています。

関数の起動に関する完全な記述は、セクション 3.2.3 [リストフォーム] 、ページ 26 を参照して下さい。

Function: funcall function &rest arguments

この関数は、 function をアーギュメントのリストに適用し、その結果を返しま す。このリストは(全ての)アーギュメントから作られます。

function は関数 (Lisp 関数もしくは全てのアーギュメントを評価する primitive 関数) でなくてはいけません。特殊フォームやマクロであってはいけません。

  (funcall (function list) 1 2 3 '(4 5))
  => (1 2 3 (4 5))

Function: apply function arg &rest args

この関数は、最後のアーギュメントを特別に扱う点を除いて funcall と同じで す。リストは、最後のものを除いた(全ての)アーギュメントから作られ、最後のも のはその(訳注:リストの)終りに append されます。

  (apply (function list) '(1 2 3 4 5))
  => (1 2 3 4 5)
  (apply (function list) 1 2 3 '(4 5))
  => (1 2 3 4 5)
  (setq f (function list))
  => list
  (apply f 1 2 3 4 '(5))
  => (1 2 3 4 5)
  (apply (function list) 1 2 3 4 5)
  -> ERROR: Wrong type argument: listp, 5
  (apply (function and) t nil)
  => ERROR: Invalid function: #<subr and>


Go to the first, previous, next, last section, table of contents.