假设:
λ: let x = 1 + 2
我运行sprint
来打印其值:
λ: :sprint x
x = _
正如预期的那样,它没有被评估。
但是,在评估x
后:
λ: x
3
sprint
仍然输出_
,即未评估:
λ: :sprint x
x = _
为什么?
答案 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,因为您可能稍后将其评估为不同的类型。