[Haskell-cafe] Decoupling type classes (e.g. Applicative)?