消除副作用如何促进并行和并发编程



是否有任何成功实用的函数式语言(如Erlang)或库基于以下假设:用这种语言编写的程序没有副作用或只有受控的副作用(例如,由Monad表示,因此可以被编译器检测和分离)

这在很大程度上是 为什么 Haskell 中没有隐式并行性?

答案是肯定的,有一些自动化的并行方法依赖于没有副作用。例如,Haskell中的嵌套数据并行性。当事先知道成本模型时,例如在并行阵列编程中,全自动方法往往效果最好。

但是,如果您愿意添加一些自己的注释,您仍然可以利用不变性来获得加速。 例如Haskell中的par注释是具有良好功效重量比的示例。

最新更新