[Haskell-cafe] Newbie question: inferred type

David Laffin dl_y_post at yahoo.co.uk
Thu Mar 30 02:51:55 EST 2006


Newbie question. Given the inferred type for square,
inferred types for quad1, quad2 and quad3 are what I
expect. Is there a straightforward explanation (i.e.
that a newbie would understand) as to why the inferred
for quad4 is less general?


-- GHC Interactive, version 6.4, for Haskell 98.

Prelude> let square x = x * x
Prelude> :t square
square :: (Num a) => a -> a

Prelude> let quad1 x = square (square x)
Prelude> :t quad1
quad1 :: (Num a) => a -> a

Prelude> let quad2 x = square $ square x
Prelude> :t quad2
quad2 :: (Num a) => a -> a

Prelude> let quad3 x = (square . square) x
Prelude> :t quad3
quad3 :: (Num a) => a -> a

Prelude> let quad4 = square . square
Prelude> :t quad4
quad4 :: Integer -> Integer

Yahoo! Photos – NEW, now offering a quality print service from just 8p a photo http://uk.photos.yahoo.com

More information about the Haskell-Cafe mailing list