RopeA rope is a standard data structure that represents a single string as a tree of strings, allowing concatenation to do no work up front. See the README.md file for details and motivating examples.
val of_string : string -> tTakes O(1) time. The string isn't copied, so don't mutate it.
val empty : tval is_empty : t -> boolval length : t -> intval to_string : t -> stringAllocates a fresh string, so takes time proportional to the total size of the result.
val to_char_sequence : t -> char Core_kernel.Sequence.tto_char_sequence can often produce characters incrementally, but in the worst case it takes time and memory proportional to the total length of the string to produce even a single character. (In such cases, it should still only take O(length) time to produce the rest of the string.)
val add_to_buffer : t -> Core_kernel.Buffer.t -> unitAppends the contents of the Rope at the end of a destination buffer.