functor (X : Sig.X-> S