scr*_*avy 11 parallel-processing monads haskell state-monad
我正在寻找一种在ST-Monad中并行运行两个计算的方法.我正在构建一个相当大的数组(使用STUArray),我想并行执行.
到目前为止,我已经在stackoverflow上找到了这个和这个 Q&A,但是第一个不适用于我的情况,因为它只处理纯代码而第二个处理IO monad - 但我处于State Thread中.
我也找到了monad-parallel包,但它要求我为ST设置一个'MonadParallel'实例.另外,单子面值包中只支持纯计算或IO单子.
有没有办法在ST内进行并行monadic计算?
首先,你的问题只有两个字:parallel和array - 我必须建议你去看看repa.另外你应该查看Data Parallel Haskell,因为它有望成为Haskell之路的下一个重要里程碑,并且有一些伟大的人参与了这个项目.
关于你的具体问题,也有能够做的正是你问什么,只是一个库IO
单子,已命名的单子平行和异步用mapConcurrently
.你有没有考虑过stToIO
进入IO
?
还有一个提升异步库,它扩展了标准版本MonadBaseControl
,它有一个实例ST
,所以你可以使用它的版本mapConcurrently
或者至少使用它作为实现你自己的灵感.