在 ghci 中,如果我这样做
Prelude> :t 5
Prelude> 5 :: Num a => a
Run Code Online (Sandbox Code Playgroud)
但如果我分配 5,我会得到Integer以下类型:
Prelude> let f = 5
Prelude> t: f
Prelude> f :: Integer
Run Code Online (Sandbox Code Playgroud)
根据我的理解,5 是允许的事实Num a => a是可以愉快地出现在任何数学表达式中(例如5 + 5.0)。我想我很好奇这是否是 Haskell 的魔法,或者我是否可以创建一个f具有相同行为方式的变量,以便我可以执行f + 5.0. 我尝试了以下方法但没有成功:
let f = 10 :: Num a => a
Run Code Online (Sandbox Code Playgroud)
f + 5.0仍然给我一个错误。