sig
  val failwithf : ('a, unit, string, unit -> 'b) format4 -> 'a
  module type S =
    sig
      type sexpable
      val sexp_of_t : sexpable -> Sexplib.Sexp.t
      val t_of_sexp : Sexplib.Sexp.t -> sexpable
    end
  module type S1 =
    sig
      type 'a sexpable
      val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'a sexpable -> Sexplib.Sexp.t
      val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a sexpable
    end
  module type S2 =
    sig
      type ('a, 'b) sexpable
      val sexp_of_t :
        ('-> Sexplib.Sexp.t) ->
        ('-> Sexplib.Sexp.t) -> ('a, 'b) sexpable -> Sexplib.Sexp.t
      val t_of_sexp :
        (Sexplib.Sexp.t -> 'a) ->
        (Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> ('a, 'b) sexpable
    end
  module Of_stringable :
    functor (M : Stringable.S->
      sig
        type sexpable = M.stringable
        val sexp_of_t : sexpable -> Sexplib.Sexp.t
        val t_of_sexp : Sexplib.Sexp.t -> sexpable
      end
  module To_stringable :
    functor (M : S->
      sig
        type stringable = M.sexpable
        val of_string : string -> stringable
        val to_string : stringable -> string
      end
end