Module Base.Binary_searchable
module type S = sig ... endmodule type S1 = sig ... endtype nonrec ('t, 'elt, 'key) binary_search =
  ?pos:int ->
  ?len:int ->
  't ->
  compare:( 'elt -> 'key -> int ) ->
  [ `Last_strictly_less_than
  | `Last_less_than_or_equal_to
  | `Last_equal_to
  | `First_equal_to
  | `First_greater_than_or_equal_to
  | `First_strictly_greater_than ] ->
  'key ->
  int optiontype nonrec ('t, 'elt) binary_search_segmented =
  ?pos:int ->
  ?len:int ->
  't ->
  segment_of:( 'elt -> [ `Left | `Right ] ) ->
  [ `Last_on_left | `First_on_right ] ->
  int option