Thank does sound like a pain, but it's better than putting fromIntegral all over my code. Why can't Haskell unify a an expected float with an infered int? It seems that this would make life alot easier.
This is my biggest gripe with Haskell, at least for what I do. The numeric class system is good, but it assumes that the sub-classes are distict, where in fact integers are a proper subset of reals, which are a proper subset of complex numbers. Personally, I would like to see module level explicit coersion, similar to the way the default numeric type is handled. Something like:
module Blah where
coerce Int to Double in mean with fromInt
mean :: [Double] -> Double mean x = sum x / length x
So, if the typesystem infers a Double, but finds an Int, the function would be rewritten as if it had been specified as
mean x = sum x / (fromInt.length) x
If you want a global declaration then you could specify
coerce Int to Double with fromInt
--Matthew Donadio (m.p.donadio@ieee.org)