The idea of adding a label (`resolver') is very old. Here is the
examples of how far you can take it:
http://okmij.org/ftp/Haskell/TypeClass.html#Haskell1
We can represent all of Haskell98 classes plus functional dependencies
with only one, predefined type class.