functor (M : S1-> sig  end