マッピング関数は、(ある)集合の各要素に対し関数を適用するのに用います。これは、 (実行時まで)適用すべき関数が知られていない場合にも有効です。ここでは mapcar と mapconcat について述べます。この他のマッピング関数に関してはセクション 8.4 [mapatoms]、ページ 68 を参照して下さい。
Function: mapcar function sequence
この関数は、 sequence の各要素に function を適用(訳注:apply)し、その結果 のリストを返します。 sequence が nil で終るリストでない場合、エラーになり ます。
(mapcar (function car) '((a b) (c d) (e f)))
=> (a c e)
(mapcar (function 1+) [1 2 3])
=> (2 3 4)
(mapcar (function char-to-string) "abc")
=> ("a" "b" "c")
(progn
(setq sum 0)
(mapcar
(function (lambda (n) (setq sum (+ sum n))))
'(1 2 3 4 5))
sum)
=> 15
Function: mapconcat function sequence separator
この関数は、 sequence の各要素に function を適用(訳注:apply)し、その結果 をストリングとして繋げ(訳注:concatenate)ます。結果の各 pair の間に separator を挿入します。 (例えば) " " をセパレータとして用いると、 function の返す値の間にスペースを挿入することになります。
function は、ストリングを返す 1アーギュメントの関数でなくてはいけません。
(mapconcat (function (lambda (s) (format "%s" s)))
'(The cat in the hat)
" ")
=> "The cat in the hat"
(mapconcat (function (lambda (x) (format "%c" (1+ x))))
"HAL-8000"
" ")
=> "IBM.9111"