`sig
type t = BatRope.t
exception Out_of_bounds
exception Invalid_rope
val max_length : int
val empty : t
val of_latin1 : string -> t
val of_string : string -> t
val to_string : t -> string
val of_ustring : BatUTF8.t -> t
val to_ustring : t -> BatUTF8.t
val of_uchar : BatCamomile.UChar.t -> t
val of_char : char -> t
val make : int -> BatCamomile.UChar.t -> t
val lowercase : t -> t
val uppercase : t -> t
val capitalize : t -> t
val uncapitalize : t -> t
val join : t -> t list -> t
val explode : t -> BatCamomile.UChar.t list
val implode : BatCamomile.UChar.t list -> t
val is_empty : t -> bool
val length : t -> int
val height : t -> int
val balance : t -> t
val append : t -> t -> t
val ( ^^^ ) : t -> t -> t
val append_char : BatCamomile.UChar.t -> t -> t
val prepend_char : BatCamomile.UChar.t -> t -> t
val get : t -> int -> BatCamomile.UChar.t
val set : t -> int -> BatCamomile.UChar.t -> t
val sub : t -> int -> int -> t
val insert : int -> t -> t -> t
val remove : int -> int -> t -> t
val iter : (BatCamomile.UChar.t -> unit) -> t -> unit
val iteri : ?base:int -> (int -> BatCamomile.UChar.t -> unit) -> t -> unit
val range_iter : (BatCamomile.UChar.t -> unit) -> int -> int -> t -> unit
val range_iteri :
(int -> BatCamomile.UChar.t -> unit) ->
?base:int -> int -> int -> t -> unit
val bulk_iter : (BatUTF8.t -> unit) -> t -> unit
val bulk_iteri : ?base:int -> (int -> BatUTF8.t -> unit) -> t -> unit
val fold : ('a -> BatCamomile.UChar.t -> 'a) -> 'a -> t -> 'a
val bulk_fold : ('a -> BatUTF8.t -> 'a) -> 'a -> t -> 'a
val enum : t -> BatCamomile.UChar.t BatEnum.t
val bulk_enum : t -> BatUTF8.t BatEnum.t
val of_enum : BatCamomile.UChar.t BatEnum.t -> t
val of_bulk_enum : BatUTF8.t BatEnum.t -> t
val backwards : t -> BatCamomile.UChar.t BatEnum.t
val of_backwards : BatCamomile.UChar.t BatEnum.t -> t
val init : int -> (int -> BatCamomile.UChar.t) -> t
val of_int : int -> t
val of_float : float -> t
val to_int : t -> int
val to_float : t -> float
val bulk_map : (BatUTF8.t -> BatUTF8.t) -> t -> t
val map : (BatCamomile.UChar.t -> BatCamomile.UChar.t) -> t -> t
val bulk_filter_map : (BatUTF8.t -> BatUTF8.t option) -> t -> t
val filter_map :
(BatCamomile.UChar.t -> BatCamomile.UChar.t option) -> t -> t
val filter : (BatCamomile.UChar.t -> bool) -> t -> t
val index : t -> BatCamomile.UChar.t -> int
val index_from : t -> int -> BatCamomile.UChar.t -> int
val rindex : t -> BatCamomile.UChar.t -> int
val rindex_from : t -> int -> BatCamomile.UChar.t -> int
val contains : t -> BatCamomile.UChar.t -> bool
val contains_from : t -> int -> BatCamomile.UChar.t -> bool
val rcontains_from : t -> int -> BatCamomile.UChar.t -> bool
val find : t -> t -> int
val find_from : t -> int -> t -> int
val rfind : t -> t -> int
val rfind_from : t -> int -> t -> int
val starts_with : t -> t -> bool
val ends_with : t -> t -> bool
val exists : t -> t -> bool
val trim : t -> t
val left : t -> int -> t
val right : t -> int -> t
val head : t -> int -> t
val tail : t -> int -> t
val strip : ?chars:BatCamomile.UChar.t list -> t -> t
val lchop : t -> t
val rchop : t -> t
val slice : ?first:int -> ?last:int -> t -> t
val splice : t -> int -> int -> t -> t
val fill : t -> int -> int -> BatCamomile.UChar.t -> t
val blit : t -> int -> t -> int -> int -> t
val concat : t -> t list -> t
val escaped : t -> t
val replace_chars : (BatCamomile.UChar.t -> BatUTF8.t) -> t -> t
val replace : str:t -> sub:t -> by:t -> bool * t
val split : t -> t -> t * t
val rsplit : t -> t -> t * t
val nsplit : t -> t -> t list
val compare : t -> t -> int
val icompare : t -> t -> int
module IRope : sig type t = t val compare : t -> t -> int end
module Infix : sig val ( ^^^ ) : t -> t -> t end
val print : 'a BatInnerIO.output -> t -> unit
val t_printer : t BatValue_printer.t
end`