functor (E : Eq) ->
  functor (M : Map.S) -> sig type a = E.a M.t val eq : a -> a -> bool end