Module types for a binary_search function for a sequence, and functors for building
binary_search functions.
module type Indexable : sig ... endAn Indexable type is a finite sequence of elements indexed by consecutive integers
0 ... length t - 1. get and length must be O(1) for the resulting
binary_search to be lg(n).
module type Indexable1 : sig ... endtype ('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 ('t, 'elt) binary_search_segmented = ?pos:int ‑> ?len:int ‑> 't ‑> segment_of:('elt ‑> [ `Left | `Right ]) ‑> [ `Last_on_left | `First_on_right ] ‑> int optionmodule type S : sig ... endmodule type S1 : sig ... endmodule type Binary_searchable : sig ... end