Cf.
(***).
Apply two functions on corresponding values in a pair, where the
pattern match on the pair constructor is lazy. This is crucial in
recursions such as the one of
partition. One the other hand
there are applications where strict application is crucial, e.g.
mapSnd f ab where the left pair member is a large lazy list.
With the lazy
mapSnd we make the application of
f
depend on the whole pair
ab. See
Data.Tuple.Example
for two examples where one variant is definitely better than the other
one.