functor   (B : sig          type t          val empty : Functors.t          val length : Functors.t -> int          val get : Functors.t -> int -> char          val make : int -> char -> Functors.t          val init : int -> f:(int -> char) -> Functors.t          val compare : Functors.t -> Functors.t -> int          val concat : sep:Functors.t -> Functors.t list -> Functors.t          val iter : f:(char -> unit) -> Functors.t -> unit          val iteri : f:(int -> char -> unit) -> Functors.t -> unit          val map : f:(char -> char) -> Functors.t -> Functors.t          val mapi : f:(int -> char -> char) -> Functors.t -> Functors.t          val index_from : Functors.t -> int -> char -> int          val rindex_from : Functors.t -> int -> char -> int          val sub : Functors.t -> pos:int -> len:int -> Functors.t          val of_buffer : Buffer.t -> Functors.t          val string_for_output : Functors.t -> string        end->   sig     type character = char     type t = B.t     val max_string_length : int option     val empty : B.t     val is_empty : B.t -> bool     val make : int -> char -> B.t     val length : B.t -> int     val of_character : char -> B.t     val of_character_list : char list -> B.t     val to_character_list : B.t -> char list     val get : B.t -> index:int -> char option     val set : B.t -> index:int -> v:char -> B.t option     val get_exn : B.t -> index:int -> char     val set_exn : B.t -> index:int -> v:char -> B.t     val compare : B.t -> B.t -> int     val compare_substring : B.t * int * int -> B.t * int * int -> int     type s = Functors.Make_native.t     module T_length_and_compsub :       sig         type t = Functors.Make_native.s         val length : B.t -> int         val compare_substring : B.t * int * int -> B.t * int * int -> int       end     val compare_substring_strict :       T_length_and_compsub.t * int * int ->       T_length_and_compsub.t * int * int -> int option     val index_of_string :       ?from:int ->       ?sub_index:int ->       ?sub_length:int ->       T_length_and_compsub.t -> sub:T_length_and_compsub.t -> int option     val index_of_string_reverse :       ?from:int ->       ?sub_index:int ->       ?sub_length:int ->       T_length_and_compsub.t -> sub:T_length_and_compsub.t -> int option     val concat : ?sep:B.t -> B.t list -> B.t     val fold : B.t -> init:'-> f:('-> char -> 'a) -> 'a     val foldi : B.t -> init:'-> f:(int -> '-> char -> 'a) -> 'a     val fold2_exn :       B.t -> B.t -> init:'-> f:('-> char -> char -> 'a) -> 'a     val sub_exn : B.t -> index:int -> length:int -> B.t     val sub : B.t -> index:int -> length:int -> B.t option     val slice_exn : ?start:int -> ?finish:int -> B.t -> B.t     val slice : ?start:int -> ?finish:int -> B.t -> B.t option     val iter : B.t -> f:(char -> unit) -> unit     val iteri : B.t -> f:(int -> char -> unit) -> unit     val iter_reverse : B.t -> f:(char -> 'a) -> unit     val rev : B.t -> B.t     val map : B.t -> f:(char -> char) -> B.t     val map2_exn : B.t -> B.t -> f:(char -> char -> char) -> B.t     val mapi : B.t -> f:(int -> char -> char) -> B.t     val for_all : B.t -> f:(char -> bool) -> bool     val exists : B.t -> f:(char -> bool) -> bool     val index_of_character : B.t -> ?from:int -> char -> int option     val index_of_character_reverse : B.t -> ?from:int -> char -> int option     val resize_from_length :       from:int -> ?length:int -> length_of_s:int -> int * int     val find :       ?from:int -> ?length:int -> B.t -> f:(char -> bool) -> int option     val find_reverse :       ?from:int -> ?length:int -> B.t -> f:(char -> bool) -> int option     val filter_map :       ?from:int -> ?length:int -> B.t -> f:(char -> char option) -> B.t     val filter : ?from:int -> ?length:int -> B.t -> f:(char -> bool) -> B.t     val strip :       ?on:[< `Both | `Left | `Right > `Both ] ->       ?whitespace:(char -> bool) -> s -> s     val split : s -> on:[< `Character of char | `String of s ] -> s list     val sub_same_tl : s -> comp:s -> len:int -> off:int -> bool     val is_prefix : s -> prefix:s -> bool     val is_suffix : s -> suffix:s -> bool     val chop_prefix_exn : s -> prefix:s -> s     val chop_prefix : s -> prefix:s -> s option     val chop_suffix_exn : s -> suffix:s -> s     val chop_suffix : s -> suffix:s -> s option     val split_at : s -> index:int -> s * s     val take : s -> index:int -> s     val drop : s -> index:int -> s     module Make_output :       functor (Model : Api.OUTPUT_MODEL->         sig           val output :             ('a, 'b, 'c) Model.channel -> B.t -> (unit, 'd, 'e) Model.thread         end     val take_while_with_index : B.t -> f:(int -> char -> bool) -> B.t     val take_while : B.t -> f:(char -> bool) -> B.t   end