[Haskell-beginners] Why is type "Integer -> Integer" and not "(Num
a) => a -> a"?
dag.hovland at uib.no
Thu Nov 12 03:37:28 EST 2009
I have a problem with understanding some types given by ghc and hugs.
The file loaded is:
f1 = \x -> x * 2
f2 x = x * 2
After they are loaded I get the following from ghci
*Main> :t f1
f1 :: Integer -> Integer
*Main> :t f2
f2 :: (Num a) => a -> a
*Main> :t \x -> x * 2
\x -> x * 2 :: (Num a) => a -> a
I do not understand why f1 is given Integer -> Integer as a type and not
the polymorphic (Num a) => a -> a. I believed that f1, f2 and the lambda
expression should all have the same type. Similar output to that above
is given by Hugs.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 3880 bytes
Desc: S/MIME Cryptographic Signature
Url : http://www.haskell.org/pipermail/beginners/attachments/20091112/a88251b0/smime.bin
More information about the Beginners