let map_h_2 f g (a , b) = (f a , g b) let map2 f (a, b) = (f a, f b) let map3 f (a , b , c) = (f a , f b , f c) let apply2 f (a, b) = f a b let list2 (a, b) = [a;b] module Pair = struct let map = map2 let apply f (a, b) = f a b end