So, it is possible to break the invariants of your priority queue by
using fmap with a non-monotonic function, right? I see that it might be
usefull to have such instances, sometimes.

As it is not possible to hide instances, once they are definded, I'd
propose to not offer those instances by default. Instead you could
provide implementations of all the instance functions necessary to
define this instances yourself. Or one could have a newtype wrapper
around the priority queue for which instances of Function, Foldable, and
Traversable are defined. This would allow to "activate" the nice
instances on demand but to stay safe by default.

Hmmmm.  I suggest:
Making this change now.

Louis Wasserman
wasserman.louis@gmail.com
http://profiles.google.com/wasserman.louis