I believe this is just a restriction of monomorphism . Polymorphic types such as are Num a => atreated as Integerif the actual type is not specified. This rule probably also works in ghci, and you see an integer type instead of some unknown type variable.
UPD 1: , .
UPD 2: Random , . - default (Integer, Double), . ghci
Prelude System.Random> default ()
Prelude System.Random> randomIO
<interactive>:6:1:
No instance for (Show (IO a0)) arising from a use of ‘print’
In a stmt of an interactive GHCi command: print it
Prelude System.Random> default (Integer)
Prelude System.Random> randomIO
-7948113563809442883
Prelude System.Random> default (Double)
Prelude System.Random> randomIO
0.41581766590151104