functor   (S : sig          type t          type character          val empty : Sosa.t          val is_whitespace : Sosa.character -> bool          val length : Sosa.t -> int          val find :            ?from:int ->            ?length:int -> Sosa.t -> f:(Sosa.character -> bool) -> int option          val find_reverse :            ?from:int ->            ?length:int -> Sosa.t -> f:(Sosa.character -> bool) -> int option          val sub_exn : Sosa.t -> index:int -> length:int -> Sosa.t        end->   sig     val strip :       ?on:[< `Both | `Left | `Right > `Both ] ->       ?whitespace:(S.character -> bool) -> S.t -> S.t   end