【发布时间】:2019-12-18 15:31:53
【问题描述】:
人们认为 Haskell 在并行性方面具有优势,因为它具有不可变的数据结构。但是 Haskell 也很懒惰。这意味着数据实际上可以从 thunk 转变为评估结果。
所以看起来懒惰会损害不变性的优势。我错了还是 Haskell 有针对这个问题的对策?或者这是 Haskell 自己的特性?
【问题讨论】:
-
“数据实际上可以从 thunk 转变为评估结果”你能多说一下你在这里的意思以及为什么你相信这是真的吗?
-
@Thomas wiki.haskell.org/Thunk 我没有关于 haskell 实现的确切信息,但我认为这是实现惰性和 thunk 的最简单的解决方案。
-
重点是,每个线程必须同步信息,无论 thunk 是否已经被评估。或者每个线程必须重新评估 thunk。 (我认为)
-
@Dai 因此,每次执行共享值评估时,线程都必须阻塞其他任务。
标签: haskell parallel-processing immutability lazy-evaluation