了解' sprint'在评估多态表达式

时间:2016-06-22 03:27:53

标签: haskell polymorphism ghci thunk

假设:

λ: let x = 1 + 2

我运行sprint来打印其值:

λ: :sprint x
x = _

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

但是,在评估x后:

λ: x
3

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

λ: :sprint x
x = _

为什么?

1 个答案:

答案 0 :(得分:3)

这是因为x是多态的。

与:比较:

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

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