sig
  type t
  type data
  val init : t
  val f : t -> data -> t
  val t_of_sexp : Sexplib.Sexp.t -> t
  val sexp_of_t : t -> Sexplib.Sexp.t
end