Compare.Monad
M : Interface.MONAD
E : Interface.EQ1 with type 'a t = 'a M.t
module I : sig ... end
val associativity : ('a -> 'b M.t) -> ('b -> 'c M.t) -> 'a M.t -> bool
val identity : ('a -> 'b M.t) -> 'a -> bool