zip
ふたつのリストを処理する
zipを使うとふたつのリストをまとめることができます。
code: (haskell)
zip 1..3 'a'..'c'
(1,'a'),(2,'b'),(3,'c')
引数のリストの長さが異なっていた場合、返り値の長さは短い方に揃えられます。
code: (haskell)
zip 1..3 'a'..'z'
(1,'a'),(2,'b'),(3,'c')
zip 1..100 'a'..'e'
(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e')
長い方は無限リストでも機能します。
code: (haskell)
zip 1..3 'a'..
(1,'a'),(2,'b'),(3,'c')
2引数関数を与えてふたつのリストを処理するにはzipWithが使えます。
code: (haskell)
zipWith (+) 1, 2, 3 10, 100, 1000
11,102,1003
zipWith (&&) False, False, True, True False, True, False, True
False,False,False,True
みっつ以上のリストを処理する
みっつ以上のリストをまとめるにはzip3を使います。
zipと同様、引数の長さが異なっている場合は短いものに揃えられます。
code: (haskell)
zip3 1..3 'a'.. False, True, False, True
(1,'a',False),(2,'b',True),(3,'c',False)
4個以上のリストをまとめる関数はData.Listをインポートして使うことが出来ます。
zip4からzip7までの関数が定義されています。
code: (haskell)
import Data.List
:t zip4
zip4 :: a -> b -> c -> d -> (a, b, c, d)
:t zip7
zip7
:: a
-> b
-> c
-> d
-> e
-> f
-> g
-> (a, b, c, d, e, f, g)
同様にzipWith3からzipWith7も定義されています。
#recipe-collection