itlist2 : ('a -> 'b -> 'c -> 'c) -> 'a list -> 'b list -> 'c -> 'c
f x1 y1 (f x2 y2 ... (f xn yn z)...)
- itlist2 (fn x => fn y => fn z => (x,y)::z) [1,2] [3,4] []; > val it = [(1,3), (2,4)] : (int * int) list