One problem in Programming Haskell from First Principles confuses me. (So far.)

It's one where you start with the declaration and binding

i :: Num a => a
i = 1

(which of course works because Num a => a is the type of 1) and then change the declaration to

i :: a

and first try to predict and then see what happens. It fails, with ghci suggesting that you put the Num a => back. That seemed reasonable at first, but then I considered this:
So, if I can't bind 1 to i which is declared to have type a, why can I successfully pass 1 to id?