在ghci中,如果我这样做
Prelude> :t 5
Prelude> 5 :: Num a => a
但是,如果我分配5,我将得到Integer
作为类型:
Prelude> let f = 5
Prelude> t: f
Prelude> f :: Integer
根据我的理解,5是Num a => a
允许的事实是快乐地坐在任何数学表达式中(例如5 + 5.0
)。我想我是很好奇这是否是Haskell的法宝,或者我是否可以使变量f
的行为方式相同,以便可以执行f + 5.0
。我已经尝试过以下方法,但是没有运气:
let f = 10 :: Num a => a
f + 5.0
仍然给我一个错误。