mapconとmapcar

mapcarとmapcしか使ったことなかった。

CL-USER> (maplist #'(lambda (a)
              (pprint a)
              (reverse a))
          '(1 2 3))

(1 2 3)
(2 3)
(3)
((3 2 1) (3 2) (3))
CL-USER> (mapcon #'(lambda (a)
               (pprint a)
               (reverse a))
               '(1 2 3))

(1 2 3)
(2 3)
(3)
(3 2 1 3 2 3)

http://www.jsk.t.u-tokyo.ac.jp/~inaba/soft3/soft3-l1-lisp/node59.html

mapcar, maplistは呼びだしごとの関数の値をリストにしますが,mapc, mapl は,リストを作らずに呼びだしだけを行ないたい時に使います. mapcanは,呼び出した関数の結果がリストだとして,すべての結果のリストを appendした結果を返します.mapconはappendではなくnconcします.

なるほど。