'它是'它' GHCi中的变量Haskell变异?

时间:2016-02-21 07:00:41

标签: haskell functional-programming ghci

刚开始使用Haskell,据说Haskell有不可变的变量。那为什么呢?'它'每次在GHCi提示符中输入表达式时,变量都会保持变量值吗?

GHCi, version 7.10.2: http://www.haskell.org/ghc/  :? for help
Prelude> 7*2
14
Prelude> it
14
Prelude> "foo"
"foo"
Prelude> it
"foo"
Prelude>

1 个答案:

答案 0 :(得分:8)

键入ghci的表达式具有隐式类型

it :: (Show a) => IO a

换句话说,你所做的一切都在IO monad中("显示"意味着你必须能够将结果转换为文本进行打印)。当您输入一系列表达式时,它的工作方式如下:

do
   it <- foo
   it <- bar

Haskell&#34;做&#34;符号desugars到嵌套的lambdas像这样的

  foo >>= $ \it ->
     bar >>= $ \it -> ... -- and so on.

换句话说,&#34;它的价值&#34;不会改变,而是在影响前一个范围的范围内声明一个新值。