Consider the code below :
Now when I see the inferred type of f in ghci{-# LANGUAGE MultiParamTypeClasses,FlexibleInstances,FunctionalDependencies,UndecidableInstances,FlexibleContexts #-}class Foo a c | a -> cinstance Foo Int Floatf :: (Foo Int a) => Int -> af = undefined
> :t f
Now If I add the following code> f :: Int -> Float
g :: Int -> Floatg = undefinedh :: (Foo Int a) => Int -> ah = g
Could not deduce (a ~ Float)