0

鉴于:

λ: let x = 1 + 2

我跑来sprint打印它的值:

λ: :sprint x
x = _

正如预期的那样,它没有被评估。

但是,在评估之后x

λ: x
3

sprint仍然输出_,即未评估:

λ: :sprint x
x = _

这是为什么?

4

1 回答 1

3

因为x是多态的。

与之比较:

Prelude> let x = 1 + 2 :: Int
Prelude> :sprint x
x = _
Prelude> x
3
Prelude> :sprint x
x = 3
Prelude>

何时x是多态 GHCI 不能用特定值替换 thunk,因为您稍后可能会将其评估为不同的类型。

于 2016-06-22T04:00:49.647 回答