functor (S : T_LENGTH_SUB_AND_SEARCH->
  sig
    val split :
      S.t -> on:[< `Character of S.character | `String of S.t ] -> S.t list
  end