Prelude> :t "hello, world" "hello, world" :: String Prelude> :t putStr "hello, world" putStr "hello, world" :: IO () Prelude> :t sum [1..10] sum (enumFromTo 1 10) :: (Num a, Enum a) => a Prelude>Note that Hugs displays the most general type that can be inferred for each expression. For example, compare the type inferred for sum [1..10] above with the type printed by the evaluator (using :set +t):
Prelude> :set +t Prelude> sum [1..10] 55 :: Int Prelude>The difference is explained by the fact that the evaluator uses the Haskell default mechanism to instantiate the type variable a in the most general type to the type Int, avoiding an error with unresolved overloading.