zipWith3 generalizes
zip3 by zipping with the function
given as the first argument, instead of a tupling function.
zipWith3 f (x1 :> x2 :> ... xn :> Nil) (y1 :> y2 :> ... :> yn :> Nil) (z1 :> z2 :> ... :> zn :> Nil) == (f x1 y1 z1 :> f x2 y2 z2 :> ... :> f xn yn zn :> Nil)
"
zipWith3 f xs ys zs" corresponds to the following
circuit layout:
NB:
zipWith3 is
strict in its second argument,
and
lazy in its third and fourth. This matters when
zipWith3 is used in a recursive setting. See
lazyV for
more information.