[Haskell] Overapping instances [Was: What is the best way to write adapters?]