I loaded an haskell file with following code on hugs:


double x = x + x
quad x = double (double x)
quadrup = double . double


If I try "quad 1.01" (without quotes), the correct result of 4.04 is returned but if I try "quadrup 1.01" (without quotes) hugs returns following error message.


ERROR - Cannot infer instance

*** Instance : Fractional Integer

*** Expression : quadrup 1.01


Hugs returns the following types for quad and quadrup.


Main> :type quad
quad :: Num a => a -> a
Main> :type quadrup
quadrup :: Integer -> Integer


Why does quadrup end up with type of Integer -> Integer instead of "Num a => a -> a" ?