in reply to @ 2016-87 15:16 UTCYour class only requires one language extension (MultiParamTypeClass) which is not too bad, but which by itself only really enables this one use case (along with related ones for super and subtyping, etc).
Your instances, however, require crazy things (like at least OverlappingInstances) which can result in much-harder-to-reason-about instance resolution in general.