マッピング関数は、(ある)集合の各要素に対し関数を適用するのに用います。これは、 (実行時まで)適用すべき関数が知られていない場合にも有効です。ここでは 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"