typeclass lookups will constantly have to be done at runtime if something is too generic. Perhaps the fact that these other languages don't support typeclasses and hence don't have the same performance penalty is part of the reason why it's ok (or at the very least, not as bad) to do this in these languages as it is in Haskell?
Prelude> :t fromInteger 4 6 :: Double<interactive>:1:0:No instance for (Num (t -> Double))arising from a use of `fromInteger' at <interactive>:1:0-14Possible fix: add an instance declaration for (Num (t -> Double))In the expression: fromInteger 4 6 :: Double