[Haskell-cafe] Re: a simple question about types
jon.fairbairn at cl.cam.ac.uk
Thu Nov 18 03:59:24 EST 2010
Daniel Fischer <daniel.is.fischer at web.de> writes:
> On Wednesday 17 November 2010 19:09:16, Jerzy M wrote:
>> let me take this simple function: (2*).
>> If I check its type
>> :t (2*)
>> I'll obtain
>> (2*) :: (Num a) => a -> a
>> But now it suffices to write
>> g = (2*)
>> and check
>> :t g
>> to obtain
>> g :: Integer -> Integer
>> One more combination, now I write
>> h x = (2*) x
>> and check once more
>> :t h
>> to get
>> h :: (Num a) => a -> a
>> So my question is: why (in this second example) Integer is inferred?
>> What makes a difference?
> The monomorphism restriction.
And default. If you load this into ghci
module Main where
g = (2*)
main = putStrLn "foo"
and type :t g
you'll get Int -> Int
Jón Fairbairn Jon.Fairbairn at cl.cam.ac.uk
More information about the Haskell-Cafe