functor (P : sig val phase : Options.category end-> S