【发布时间】:2017-03-09 21:53:26
【问题描述】:
我正在尝试理解 Haskell 中的并行性,我很好奇的一件事是 seq / rseq 和 par / rpar 之间的签名差异
seq :: a -> b -> b
par :: a -> b -> b
rseq :: a -> Eval a
rpar :: a -> Eval a
我知道rseq 和rpar 是一元版本,所以它们带有Eval 部分。 但是为什么seq 和par 不都只是a -> a? 有点像严格的身份......应该存在“复杂化”的原因。
seq 周围似乎也有很多谜团。一些消息来源说 a 在评估 b 时评估(到 WHNF)。其他消息来源说a 在通话时进行评估。真的很混乱!虽然可以通过实际测试来试驾一些东西,但恐怕我很容易误解结果。
【问题讨论】:
-
请参阅 this 了解有关
seq的信息以及为什么它是 2 参数函数。
标签: haskell