top page > computer > haskell > web_lecture > for_programmer > filter_concatmap.html
更新日:
文責: 重城良国

関数concatMapによる関数filterの定義

はじめに

関数concatMapで関数filterが定義できる。

filterC :: (a -> Bool) -> [a] -> [a]

定義

filterC p = concatMap $ \x -> if p x then [x] else []

mapの段階とconcatの段階をわけて考えるとわかりやすい。「引数xが条件pを満たすならば[x]にそうでないならば[]に」という変換をリストのすべての要素に対して行う。たとえば条件が「偶数である」ならば以下のようになるだろう。

[3, 8, 9, 4, 2, 5]

[[], [8], [], [4], [2], []]

となる。これを関数concatでつなげてやる。

[8, 4, 2]

「関数concatMap」へもどる 「構文: リスト内包表記1」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics