Why is so hard to deal with Number in Haskell
Division will never work in Haskell:) 
If you have two Integer a, b a/b gets error It works only if you do that: (fromIntegral a) / (fromInteger b) because / is defined under Fractional -- convert from Integral to Integer class (Real a, Enum a)=> Integral a where toInteger:: a -> Integer -- convert from Integer to Num a class (Num a)=> a where fromInteger:: Integer -> a
-- converts from Integer to polymorphic type: Num
let a = 3::Integer
let b = 2::Integer

a/b gets error

class (Num a)=>Fractional a where
 (/):: a -> a -> a

(fromIntegral a) / (fromInteger b)

fromIntegral::(Integral a, Num b)=> a -> b
fromIntegral = fromInteger . toInteger

toInteger::(Real a, Enum a)=> a -> Integer
fromIntegral::(Num a)=>Integer -> a

-- (Real a, Enum a) -> (Num b)
fromIntegral . toInteger::(Real a, Enum a, Num b)=> a -> b

(Num a)          => Fractional a
(Num a, Ord a)   => Real
(Real a, Enum a) => Integral
(Num a, Orda a, Enum a) => Integral

(Real a, Enum b) => Integral 
fromIntegral . toInteger::(Integral a, Num b)=> a -> b