问题描述
我只是在努力处理一个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
当ghci重新开始时,它报告it
不在范围内,因此我认为it
默认情况下不应该有任何特殊含义。
解决方法
在GHCi中,it
始终绑定到最后求值的表达式,并遮盖其先前的值:
Prelude> 2 + 3
5
Prelude> it
5
Prelude> 3 * 4
12
Prelude> it
12
在GHCi会话开始时,它没有定义。