zipWith

zipWithよくわかってなかったのですが、やっとわかりました。

main = print $ zipWith (+) [1, 2, 3] [4, 5, 6]
[5,7,9]

zipは[1, 2, 3]と[4, 5, 6]を渡すと[(1, 4), (2, 5), (3, 6)]のようにそれぞれの要素を綴じ合わせてタプルにしますが、zipWithは綴じ合わせを行う際の2項演算関数を指定するもののようです。