sig
type atom = char
type t = string
val length : t -> int
val set : t -> int -> atom -> t
val get : t -> int -> atom
val insert : t -> int -> atom -> t
val delete : t -> int -> t
type patch
val diff : t -> t -> patch
val apply : t -> patch -> t
val merge : resolve:(atom -> atom -> atom) -> ancestor:t -> t -> t -> t
end