type ('left, 'right) t = [ | `Left of 'left| `Right of 'right| `Both of 'left * 'right
 ]val compare : 
  ('left -> 'left -> int) ->
  ('right -> 'right -> int) ->
  ('left, 'right) t ->
  ('left, 'right) t ->
  intval equal : 
  ('left -> 'left -> bool) ->
  ('right -> 'right -> bool) ->
  ('left, 'right) t ->
  ('left, 'right) t ->
  boolval left : ('left, _) t -> 'left optionval right : (_, 'right) t -> 'right optionval left_value : ('left, _) t -> default:'left -> 'leftval right_value : (_, 'right) t -> default:'right -> 'rightval values : 
  ('left, 'right) t ->
  left_default:'left ->
  right_default:'right ->
  'left * 'right