GHC infers a type signature for h from its definition, and the unexpected type signature is the result. You won't be able to use h though until you have matching instances around.
h