next up previous
Next: 11.3 :test, :keyキーワード Up: 11 関数をデータとして扱う関数の例 Previous: 11.1 関数呼び出しのための基本関数: funcall, apply

11.2 Map関数

Map関数は一つの関数を繰り返して呼び出すための関数の総称です. 組み込みのMap関数には,mapcar, maplist, mapc, mapl, mapcan, mapconがあ ります.これらは,Listデータだけにしか使うことができませんが, (Map関数 関数 データ1 ... データN) というように第一引数に繰り返し呼び出したい関数を与え,第二引数以降に データを渡します.

<cl> (mapcar 'list '(1 2 3))
((1) (2) (3))
<cl> (mapcar 'list '(1 2 3) '(a b c))
((1 A) (2 B) (3 C))
<cl> (mapcar #'(lambda (x) (* x x)) '(1 2 3))
(1 4 9)
<cl> (maplist 'list '(1 2 3))
(((1 2 3)) ((2 3)) ((3)))
<cl> (maplist 'list '(1 2 3) '(a b c))
(((1 2 3) (A B C)) ((2 3) (B C)) ((3) (C)))
<cl> (maplist #'(lambda (x) (* x x)) '(1 2 3))
Error: (1 2 3) is an illegal argument to *
[1] <cl> :reset
<cl> (maplist #'(lambda (x) (length x)) '(1 2 3))
(3 2 1)
<cl> (mapcan 'list '(1 2 3))
(1 2 3)
<cl> (mapcan 'list '(1 2 3) '(a b c))
(1 A 2 B 3 C)
mapcar, maplistは呼びだしごとの関数の値をリストにしますが,mapc, mapl は,リストを作らずに呼びだしだけを行ないたい時に使います. mapcanは,呼び出した関数の結果がリストだとして,すべての結果のリストを appendした結果を返します.mapconはappendではなくnconcします.

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