我正在尝试理解Haskell中惰性求值的内部运作机制。
如果我有这样一个函数调用:
我的理解是Haskell会首先处理
换句话说,当输入到GHCi(例如)时,表达式的每个部分将按什么顺序进行评估?
如果我有这样一个函数调用:
negate $ 5 * sqrt 16
我的理解是Haskell会首先处理
sqrt 16
,创建一个thunk并在需要时计算其值。
但是,当sqrt 16
传递给乘法时,它是否被评估,还是只有在以某种方式输出到控制台时才被评估?换句话说,当输入到GHCi(例如)时,表达式的每个部分将按什么顺序进行评估?