foldrとfoldl
両者の違いを実感するために、それぞれでmap関数を書いてみた。
mpr f = foldr (\a b->f a:b) [] mpl f = foldl (\a b->a++[f b]) [] main = do print $ map (*2) [1..3] print $ mpr (*2) [1..3] print $ mpl (*2) [1..3]
別解
mpr f = foldr ((:).f) []
両者の違いを実感するために、それぞれでmap関数を書いてみた。
mpr f = foldr (\a b->f a:b) [] mpl f = foldl (\a b->a++[f b]) [] main = do print $ map (*2) [1..3] print $ mpr (*2) [1..3] print $ mpl (*2) [1..3]
別解
mpr f = foldr ((:).f) []