pair: operations on pairs

value fst : 'a * 'b -> 'a
Return the first component of a pair.
value snd : 'a * 'b -> 'b
Return the second component of a pair.
value split : ('a * 'b) list -> 'a list * 'b list
Transform a list of pairs into a pair of lists: split [(a1,b1); ...; (an,bn)] is ([a1; ...; an], [b1; ...; bn])
value combine : 'a list * 'b list -> ('a * 'b) list
Transform a pair of lists into a list of pairs: combine ([a1; ...; an], [b1; ...; bn]) is [(a1,b1); ...; (an,bn)]. Raise Invalid_argument "combine" if the two lists have different lengths.
value map_combine : ('a * 'b -> 'c) -> 'a list * 'b list -> 'c list
map_combine f ([a1; ...; an], [b1; ...; bn]) is [f (a1, b1); ...; f (an, bn)]. Raise invalid_argument "map_combine" if the two lists have different lengths.
value do_list_combine : ('a * 'b -> unit) -> 'a list * 'b list -> unit
do_list_combine f ([a1; ...; an], [b1; ...; bn]) calls in turn f (a1, b1); ...; f (an, bn), discarding the results. Raise Invalid_argument "do_list_combine" if the two lists have different lengths.