gpt4 book ai didi

haskell - 关于 Haskell 中的 'pseq'

转载 作者:行者123 更新时间:2023-12-04 02:05:36 27 4
gpt4 key购买 nike

考虑以下两个陈述:

(a `par` b) `pseq` (a + b)


a `par` (b `pseq` (a + b))

有人可以解释他们的行为有何不同吗?

对于第一个,如果主线程完成了计算 b但 Spark 计算 a还没结束,主线程会继续计算 a + b ?

最佳答案

par a b语义上等价于 b , 但它暗示开始评估 a 可能有用早期的。另一方面pseq强制对其第一个参数进行评估,但只是其第二个参数中的(惰性)恒等函数。

所以,

(a `par` b) `pseq` (a + b)

在语义上等价于
b `pseq` (a + b)

这相当于
a `par` (b `pseq` (a + b))

因为两者都说“评估 b然后成为thunk a + b”。鉴于 par 的后果不精确从语言定义中看不出其他差异。相反,在您的特定编译器/运行时,它们可能会做一些稍微不同的事情。

关于haskell - 关于 Haskell 中的 'pseq',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com