rev_itlist2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
f xn yn ( ... (f x2 y2 (f x1 y1 z))...).
# let dot v w = rev_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