Emacs-Lisp > mapcarとmapc

mapcar

mapcar関数はリストの各々の要素に関数をapplyした結果をリストとして返す。
  1. (defun mapcar (fn mlist)
  2. (cond ((null mlist) nil)
  3. (t (cons (funcall fn (car mlist))
  4. (mapcar fn (cdr mlist)) ))))
  5.  

mapc

mapcはmapcarとよく似ているが、返り値は引数として渡したもとのリストなので、関数に何らかの副作用(破壊的なリストの変更やその他出力)がなければ引数として渡したリストがそのまま返る。
  1. (defun mapc (fm mlist)
  2. (do ((x mlist (cdr x))) ; リストはコピーしてから使う
  3. ((null x) mlist) ; コピーが空になったら元のリストを返す
  4. (funcall fn (car x)) ))
  5.  
最終更新:2015年03月10日 08:01