[Haskell-beginners] Why the compiler does not commit to a type class?