正常/适用订单减少

时间:2016-07-15 11:16:49

标签: haskell

在评估功能应用方面,Haskell仅支持正常的订单减少,还是支持减少应用订单?我是否正确地认为正常秩序是让Haskell懒惰的原因?

1 个答案:

答案 0 :(得分:2)

GHC运行时不使用术语缩减策略,因为这样效率非常低。实际上,GHC是一个合适的编译器,将STG机器作为其运行时的抽象机器。

但是,它实现了正常顺序降低的相同语义 - 即非严格语义。

仍然可以强制评估一些参数,如下面的应用顺序减少:

foo x y = x `seq` actualFoo x y

以上,x会立即评估,而y则不会。

其他常见的等效模式:

foo x y | seq x False = undefined
foo x y = actualFoo x y

-- or, with a GHC extension

foo !x y = actualFoo x y