Making The Road Blog

http://makingx.net/blog/

mtr2.0
Making The Road はmakingのお勉強用サイトです.PHP, Javascriptを中心にいろいろ試してoutputしていきたい.
当サイトの訪問者は24時間以内にこんな単語↓で検索されています (マウスオーバーすると単語を含むqueryを表示します!)

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は破壊的だから新たにメモリを消費しなくて速いけど,危ないときもある.

カテゴリー: Lisp | コメント( 0 ) | 2008/02/04 04:18:57 by making
ソーシャルブックマーク: add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0
トラックバックURL:

Leave a Reply

求人