It used to be the case in that

:t 3

would give you

3 :: Num a => a

but

let x = 3
:t x

would give you

x :: Integer

because storing a value in variable forced the system to commit to a specific type.

Nowadays, though, the latter gives you

x :: Num a => a

What changed? I'm at a loss as to how to search the web for an answer to this one.

@peterdrake Is x an Int or an Integer?

> let x = 3 :: Integer
x :: Integer

> let x = 3 :: Int
x :: Int

Follow

@maridonkers Yes, you can declare the type. The question was about what happens if you don't; the rules have (slightly) changed since 2013.

Sign in to participate in the conversation
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.