mapcarとmapcan
mapcarはよく使うけどmapcanはほとんど使ったことがなかった.ようやく使い方が分った.フィルターみたいな感じかな.
[1]> (mapcar #'(lambda (x) (if (oddp x) (list x))) '(1 2 3 4 5)) ((1) NIL (3) NIL (5)) [2]> (mapcan #'(lambda (x) (if (oddp x) (list x))) '(1 2 3 4 5)) (1 3 5)
第一引数のラムダにはフィルターかけたい条件文をいれてtだったらそれのリストを返すようなものを入れれば良い.
(mapcan f arg-list) = (apply #’nconc (mapcar f arg-list))
PHPでいうところのarray_filterみたいな感じかな.リストを返さないといけないのが慣れない気がするが.
てかフィルターならremove-ifとかでいいか...
** 追記 **
mapcanは破壊的だから新たにメモリを消費しなくて速いけど,危ないときもある.








