【Haskell】mapとfilterをfoldrで書く
map関数というのは、関数fとリスト[x0, x1, x2, ...]を引数にとって、[f x0, f x1, f x2, ...]を返す関数です。
filter関数というのは、関数pとリストLを引数にとって、Lの要素xiにpを作用させたものp xiがTrueのものだけを集めたリストL'を返す関数です。まさにフィルターです。
これらをfoldrを用いて書いてみました。(プログラミングHaskellの7章の問題)
map' :: (a -> b) -> [a] -> [b] map' f = foldr (\x y -> (f x) : y) [] filter' :: (a -> Bool) -> [a] -> [a] filter' p = foldr (\x y -> if p x then x : y else y) []
filterが結構難しかったです。