functor (M : S0-> sig  end