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