我只是与 Haskell 错误搏斗了一个小时,然后将其追溯到特定函数名称的使用it。有人可以解释为什么在下面的成绩单中函数名称fu和it行为不同吗?具体来说,为什么在it调用时类型会发生变化?
?> fu x = x + 1
?> :t fu
fu :: Num a => a -> a
?> fu 1
2
?> :t fu
fu :: Num a => a -> a
?> it x = x + 1
?> :t it
it :: Num a => a -> a
?> it 1
2
?> :t it
it :: Num a => a
Run Code Online (Sandbox Code Playgroud)
当 ghci 重新启动时,它报告it不在范围内,所以我认为it默认情况下应该没有任何特殊含义。
ber*_*eal 10
在 GHCi 中,it始终绑定到最后一个计算过的表达式,并隐藏其先前的值:
Prelude> 2 + 3
5
Prelude> it
5
Prelude> 3 * 4
12
Prelude> it
12
Run Code Online (Sandbox Code Playgroud)
在 GHCi 会话开始时,它没有被定义。