functor (E : Eq-> sig type a = E.a array val eq : a -> a -> bool end