6️⃣
[Haskell] zipwithを実装する
すごいHaskellたのしく学ぼう!を読んでいるので、アウトプットします。
あくまで初学者のアウトプットなので、あまりイケてない記述があるかもしれません。
第5章で関数を実装する問題があるので、自分なりの回答を載せます。
zipwith
zipwithは、関数と二つのリストを引数にとり、2つの各要素にその関数を適用する関数です。
本の回答・自分の回答
zipWith' :: (t1 -> t2 -> a) -> [t1] -> [t2] -> [a]
zipWith' _ [] _ = []
zipWith' _ _ [] = []
zipWith' fn (x : xs) (y : ys) = fn x y : zipWith' fn xs ys
再帰の考え方を使えば簡単に実装できますね。
Discussion