[Haskell] functional dependencies not satisfactory?