タプルを処理する関数。

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])