next up previous
Next: 7.2 ラムダ式 Up: 7 関数 Previous: 7 関数

7.1 仮引数の宣言

仮引数宣言には,デフォルト(既定)値を与えるためのオプショナル仮引数 (仮引数の前に&optionalをつけ,仮引数とデフォルト値とのリストを書く.), 与えられた実引数を順に仮引数に割り当てていって残りの実引数をすべてリス トにしてひとつの変数に与える場合に用いる残余仮引数(仮引数の前に&rest をつける),仮引数の順番によらずに実引数を与えたい場合に用いるキーワー ド仮引数(&key を用いる)などがあります.

<cl> (defun test (a &optional b &rest c) (list a b c))
test
<cl> (test 1)
(1 NIL NIL)
<cl> (test 1 2)
(1 2 NIL)
<cl> (test 1 2 3)
(1 2 (3))
<cl> (test 1 2 3 4)
(1 2 (3 4))

<cl> (defun cons* (&key ((:car x) 1) ((:cdr y) 2))
           (cons x y))
CONS*
<cl> (cons* :cdr 4)
(1 . 4)
<cl> (cons* (car '(:cdr :cddr)) 3)
(1 . 3)
<cl> (cons* :car 5)
(5 . 2)
<cl> (cons* :cdr 4 :car 3)
(3 . 4)
<cl> (cons* :car 3 :cdr 4)
(3 . 4)
<cl> (cons*)
(1 . 2)
<cl> (cons* 3 4)
Error: Attempt to access the package
 field of 3 which is not a symbol.
[1] <cl> :reset
また,仮引数ではない局所変数を設けるために&auxをつけた変数をおくとい う方法もあります.

generated through LaTeX2HTML. M.Inaba 平成18年5月7日