It used to be the case in #Haskell 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.
@maridonkers Yes, you can declare the type. The question was about what happens if you don't; the rules have (slightly) changed since 2013.
@peterdrake What was it then, before? Int or Integer and why?