[Haskell-cafe] decoupling type classes