[Haskell-beginners] type classes and multiple implementations