Solution
= Solution
Apply the supplied <function> to corresponding elements while preserving the stopping rule:
``
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith f [] _ = []
zipWith f _ [] = []
zipWith f (x:xs) (y:ys) = f x y : zipWith f xs ys
``
Because of <lazy evaluation>, constructing a result cons does not by itself evaluate `f x y`.