[Haskell-cafe] type class design