functor
  (Sexpable : S1) (M : sig
                         type 'a t
                         val to_sexpable : 'Sexpable.t -> 'Sexpable.t
                         val of_sexpable : 'Sexpable.t -> 'Sexpable.t
                       end->
  sig
    val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'M.t
    val sexp_of_t : ('-> Sexplib.Sexp.t) -> 'M.t -> Sexplib.Sexp.t
  end