问题 1: wikibook 说:在这个表达式中
let z = (length [1..5], reverse "olleh") in ...
z
是一个 thunk.
但是这个stackoverflow帖子说
z
的最外层是数据构造函数(,)
,它在WHNF中,因此z
不是thunk。
那么哪个是对的?我在 GHCi 上试过这个
ghci> z = (length [1..5], reverse "olleh")
ghci> :sprint z
z = (_,_)
并且看到
z
不是 thunk,只有它的组件是。
问题2:
1
和"hello"
都是正常形式,因此不是thunks。那么为什么 GHCi 显示 "hello"
是一个 thunk?
ghci> x = 1::Int
ghci> :sprint x
x = 1
ghci> x = "hello"::String
ghci> :sprint x
x = _