I got a question regarding default instances. It seems that the default Eq defined for maps is VectorEq, which requires both an Eq instance and a AdditiveMonoid instance. Why is that?
With the traditional definition of Eq that only requires an Eq for the elements MapEq, it would not be possible to define a Group for Map. Nevertheless I would prefer having MapEq the default.
I think the canonical definition of equality should be that two things are equal if it is not possible to distinguish between them (obviously disregarding things like eq and System.identityHashCode). But clearly VectorEq does not fit this definition.