[Haskell-beginners] Multi-param type classes and type dependency