Typing Haskell in Haskell with multi-parameter class and functional dependecies