Previous: Def Cmd Conventions, Up: Definition Commands
関数定義は,@defun
と@end defun
を使用します.関数名は
@defun
コマンドの直後に続き,同じ行にパラメータリストが続きます.
Calling Functionsの 定義には以下のものがあります.
— Function: apply function &rest arguments
apply
はargumentsでfunctionを呼び出し,funcall
に似ていますが,一点が異なります.argumentsの終りは, function に与えられる単一の引数ではなく引数のリストです.我々は, このリストが他の引数にappendされるとも言っています.
apply
はfunction呼び出しの結果を返します.funcall
のよ うに,functionはLisp関数やプリミティブ関数である必要があります.ス ペシャルフォームとマクロは,apply
では意味がありません.(setq f 'list) list (apply f 'x 'y 'z) error--> Wrong type argument: listp, z (apply '+ 1 2 '(3 4)) 10 (apply '+ '(1 2 3 4)) 10 (apply 'append '((a b c) nil (x y z) nil)) (a b c x y z)
apply
を使用した興味深い例は,mapcar
の記述で見付かります.
Texinfoソースファイルでは,この例は以下のようになります.
@defun apply function &rest arguments @code{apply}は@var{arguments}で@var{function}を呼び出し, @code{funcall}に似ていますが,1点異なります.@var{arguments}の終り は,@var{function}に与えられた単一の引数ではなく引数のリストです.我々 は,このリストが他の引数に@dfn{加えられる}とも言っています. @code{apply}は@var{function}呼び出しの結果を返します. @code{funcall}のように,@var{function}はLisp関数やプリミティブ関数 である必要があります.スペシャルフォームとマクロは,@code{apply}では 意味がありません. @example (setq f 'list) @result{} list (apply f 'x 'y 'z) @error{} Wrong type argument: listp, z (apply '+ 1 2 '(3 4)) @result{} 10 (apply '+ '(1 2 3 4)) @result{} 10 (apply 'append '((a b c) nil (x y z) nil)) @result{} (a b c x y z) @end example @code{apply}を使用した興味深い例は,@code{mapcar}の記述で見付かり ます. @end defun
このマニュアルでは,この関数はapply
の下のコマンドと変数索引にリス
トアップされています.
通常の変数とユーザーオプションは,変数が引数を取らない以外,関数に対する ものに似た書式を使用し記述されます.