関数の使い方メモ
動作環境
GHCi, version 7.6.3
map関数
Prelude> import Data.List
Prelude Data.List> map (2/) [1..5]
[2.0,1.0,0.6666666666666666,0.5,0.4]
Prelude Data.List> map (/2) [1..5]
[0.5,1.0,1.5,2.0,2.5]
Prelude Data.List> map (\(x,y) -> x*y) [(1,2), (3,4), (5,6)]
[2,12,30]
Prelude Data.List> map even [2..8]
[True,False,True,False,True,False,True]
foldl関数
Prelude Data.List> foldl (++) "a" ["b", "c", "d"]
"abcd"
Prelude Data.List> foldl (+) 0 [1..10]
55
Prelude Data.List> foldl (*) 0 [1..10]
0
Prelude Data.List> foldl (\(x,y) (z,w) -> (x+z, y+w)) (0,0) [(1,2), (3,4), (5,6)]
(9,12)
foldl1関数
Prelude Data.List> foldl1 (++) ["b", "c", "d"]
"bcd"
Prelude Data.List> foldl1 (+) [1..10]
55
Prelude Data.List> foldl1 (*) [1..10]
3628800
Prelude Data.List> foldl1 (\(x,y) (z,w) -> (x+z, y+w)) [(1,2), (3,4), (5,6)]
(9,12)
foldr関数
Prelude Data.List> foldr (++) "a" ["b", "c", "d"]
"bcda"
Prelude Data.List> foldr (+) 0 [1..10]
55
Prelude Data.List> foldr (*) 0 [1..10]
0
Prelude Data.List> foldr (\x y-> length x + y) 0 ["abc", "defg", "hijkl"]
12
foldr1関数
Prelude Data.List> foldr1 (++) ["b", "c", "d"]
"bcd"
Prelude Data.List> foldr1 (+) [1..10]
55
Prelude Data.List> foldr1 (*) [1..10]
3628800