functor
  (T : Typeable.Typeable) (E : sig type a = T.a val eq : a -> a -> bool end->
  sig type a = T.a val eq : Typeable.dynamic -> Typeable.dynamic -> bool end