functor (S : Set.S-> sig type a = S.t val eq : a -> a -> bool end