next up previous contents index
: 逐次実行 : 制御構造 : 定数と変数   目次   索引

関数呼び出しのための関数

(apply 〈関数〉〈引数$_1$$\cdots$〈引数$_n$〉〈引数リスト〉) 【関数】

〈引数$_1$$\sim$ 〈引数$_n$〉 および, 〈引数リスト〉 の要素を実引数として 〈関数〉 を呼び出し, その値を返す.

例:
(apply car '((a . b))) $\Rightarrow$ a
(apply list '()) $\Rightarrow$ ()
(apply list '(a)) $\Rightarrow$ (a)
(apply list 'a '(b)) $\Rightarrow$ (a b)

(map 〈関数〉〈リスト$_0$〉〈リスト$_1$$\cdots$〈リスト$_n$〉) 【関数】

〈リスト$_0$$\sim$ 〈リスト$_n$〉 の 各要素を引数として〈関数〉 を呼び出し, 結果をリストにして返す. 〈関数〉 は$n+1$引数の関数で, 〈リスト$_0$$\sim$ 〈リスト$_n$〉 は 同じ長さのリストでなければならない. また 〈関数〉 を呼び出す順序は規定されていない.

例:
(map cadr '((a b) (c d) (e f)))
$\Rightarrow$ (b d f)
(map + '(1 2 3) '(4 5 6) '(7 8 9))
$\Rightarrow$ (12 15 18)

(mapcan 〈関数〉〈リスト$_0$〉〈リスト$_1$$\cdots$〈リスト$_n$〉) 【関数】

〈リスト$_0$$\sim$ 〈リスト$_n$〉 の 各要素を引数として〈関数〉 を呼び出す. 結果は 〈関数〉 の値がすべてリストだと仮定して それらの要素すべてからなるリストを値として返す. 返されるリストは 〈関数〉 の値を破壊的に連結するため, 副作用を生じることがある. 〈関数〉 は$n+1$引数の関数で, 〈リスト$_0$$\sim$ 〈リスト$_n$〉 は 同じ長さのリストでなければならない. また 〈関数〉 を呼び出す順序は規定されていない.

例:
> (define x '((a b) (c) (1 2 3)))
x
> (mapcan cdr x)
(b 2 3)
> x
((a b 2 3) (c) (1 2 3))

(for-each 〈関数〉〈リスト$_0$〉〈リスト$_1$$\cdots$〈リスト$_n$〉) 【関数】

〈リスト$_0$$\sim$ 〈リスト$_n$〉 の各要素を引数として 〈関数〉 を呼び出す. for-each式の返す値は規定されていない. したがって,副作用をおこすために使用するのがふつうである. 〈関数〉 は$n+1$引数の関数で, 〈リスト$_0$$\sim$ 〈リスト$_n$〉 は 同じ長さのリストでなければならない. 〈関数〉 を呼び出す順序は次の通りである. まず,各〈リスト〉 の第$1$要素を引数とする呼び出しを行い, 次に各〈リスト〉 の第$2$要素を引数とする呼び出しを行い,等々であり, 最後に各〈リスト〉 の最後の要素を引数とする呼び出しを行う.

例:

(let ((v (make-vector 5)))  

(for-each (lambda (i)
(vector-set! v i (* i i)))
'(0 1 2 3 4))
v)
$\Rightarrow$ #(0 1 4 9 16)


next up previous contents index
: 逐次実行 : 制御構造 : 定数と変数   目次   索引
Tsuneyasu KOMIYA 平成14年2月22日