functor (X : sig  end-> S