itlist2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
f x1 y1 (f x2 y2 ... (f xn yn z)...)
# let dot v w = itlist2 (fun x y z -> x * y + z) v w 0;; val dot : int list -> int list -> int = # dot [1;2;3] [4;5;6];; val it : int = 32