Prelude> :t 1
1 :: Num a => a
You can specify the type as long as the target type is Num
with an annotation:
Prelude> 1 :: Int
1
it :: Int
Prelude> 1 :: Double
1.0
it :: Double
Prelude> 1 :: Word
1
it :: Word
if not the compiler will complain
Prelude> 1 :: String
<interactive>:
No instance for (Num String) arising from the literal `1'
In the expression: 1 :: String
In an equation for `it': it = 1 :: String