[Haskell-cafe] How to design default implementations of type class methods?