在计算多态表达式后理解 'sprint'
Understanding 'sprint' after evaluating a polymorphic expression
鉴于:
λ: let x = 1 + 2
I 运行 sprint
打印其值:
λ: :sprint x
x = _
不出所料,未计算。
但是,在评估 x
之后:
λ: x
3
sprint
仍然输出 _
,即未计算:
λ: :sprint x
x = _
这是为什么?
因为x
是多态的
比较:
Prelude> let x = 1 + 2 :: Int
Prelude> :sprint x
x = _
Prelude> x
3
Prelude> :sprint x
x = 3
Prelude>
当 x
是多态时,GHCI 无法将 thunk 替换为特定值,因为您稍后可能会将其评估为不同的类型。
鉴于:
λ: let x = 1 + 2
I 运行 sprint
打印其值:
λ: :sprint x
x = _
不出所料,未计算。
但是,在评估 x
之后:
λ: x
3
sprint
仍然输出 _
,即未计算:
λ: :sprint x
x = _
这是为什么?
因为x
是多态的
比较:
Prelude> let x = 1 + 2 :: Int
Prelude> :sprint x
x = _
Prelude> x
3
Prelude> :sprint x
x = 3
Prelude>
当 x
是多态时,GHCI 无法将 thunk 替换为特定值,因为您稍后可能会将其评估为不同的类型。