タプルを処理する関数。
fst関数
fst :: (a, b) -> a
2要素のタプルの第1要素を返す。
fst (1,2)
結果。
1
2つ以上の要素を持つタプルに適用するとエラー。
名前の由来はfirst。
snd関数
snd :: (a, b) -> b
2要素のタプルの第2要素を返す。
fst (1,2)
結果。
2
名前の由来はsecond。
zip関数
zip :: [a] -> [b] -> [(a, b)]
リストの各要素をタプルとしたリストを返す。
zip [1,2,3] ['a','b','c']
結果。
[(1,'a'),(2,'b'),(3,'c')]
表にするとわかりやすい。
第1要素 | 第2要素 | 第3要素 |
---|---|---|
1 | 2 | 3 |
a | b | c |
第1引数と第2引数の要素数が違う場合は、短い方に合わせられる。
zip [1,2,3,4] ['a','b','c']
結果。
[(1,'a'),(2,'b'),(3,'c')]
unzip関数
[(a, b)] -> ([a], [b])
zip関数の逆で、タプルのリストをリストのタプルに変換。
unzip [(1,4), (2,5), (3,6)]
結果。
([1,2,3],[4,5,6])