 
 
 
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. 
 
 
