特定函数名称 'it' 会发生什么?
What happens with a specific function name 'it'?
我刚刚被一个 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 会话开始时,未定义。
我刚刚被一个 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 会话开始时,未定义。