Perché i valori polimorfici non vengono dedotti in Haskell?

I letterali numerici hanno un tipo polimorfico:

*Main> :t 3 3 :: (Num t) => t 

Ma se lego una variabile a un tale letterale, il polimorfismo si perde:

 x = 3 ... *Main> :tx x :: Integer 

Se definisco una funzione, d’altra parte, è naturalmente polimorfica:

 fx = 3 ... *Main> :tf f :: (Num t1) => t -> t1 

Potrei fornire una firma del tipo per garantire che l’ x resti polimorfico:

 x :: Num a => a x = 3 ... *Main> :tx x :: (Num a) => a 

Ma perché è necessario? Perché il tipo polimorfico non è desunto?