Compare.Apply
A : Interface.APPLY
E : Interface.EQ1 with type 'a t = 'a A.t
module I : sig ... end
val associative_composition : ('b -> 'c) A.t -> ('a -> 'b) A.t -> 'a A.t -> bool