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

时间:2015-01-06 01:18:21

标签: parallel-processing functional-programming side-effects

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

1 个答案:

答案 0 :(得分:0)

这很大程度上与Why is there no implicit parallelism in Haskell?

重复

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

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