functor (S : Set.S->
  functor (G : sig type g = S.elt val g : g t end->
    sig val gen : int Generator.t -> S.t Generator.t end