3️⃣
[Haskell] zipを実装する
すごいHaskellたのしく学ぼう!を読んでいるので、アウトプットします。
あくまで初学者のアウトプットなので、あまりイケてない記述があるかもしれません。
第4章で再帰関数を実装する問題があるので、自分なりの回答を載せます。
zip
zip 関数は、2つのリストを取り、それらの要素をペアにして1つのリストにまとめる関数です。この関数は2つのリストのうちの短い方の長さに合わせてペアを形成し、結果として得られるリストの長さは元のリストのうち短い方の長さと同じになります。
zip [1,2,3] [7,8] -- [[1,7], (2,8)]
zip [1,2,3] [] -- []
本の回答・自分の回答
zip' :: [a] -> [b] -> [(a, b)]
zip' _ [] = []
zip' [] _ = []
zip' (x : xs) (y : ys) = (x, y) : zip' xs ys
完全に回答と一緒だった。これも簡単だった。
Discussion