在Haskell中管理有状态计算系统

时间:2011-07-26 19:55:39

标签: haskell state monads

所以,我有一个链接在一起的状态处理器系统。例如,处理器可能会输出其最后10个输入的平均值。它要求州计算这个平均值。

我想向系统提交值,并获取输出。我也想在过去的任何时候跳回来恢复状态。 IE浏览器。我通过系统运行1000个值。现在,我希望将系统“移动”回到我发送第500个值之后的状态。然后我想再次从那一点“重播”系统。

我还需要能够将历史状态保存到磁盘,这样我可以在将来的某个时间再次恢复整个事情(并且仍然可以使用后退和重放功能)。当然,我需要用千兆字节的数据做这件事,并且速度非常快:)

我一直在靠近它使用闭合来保持状态。但我想知道使用monad是否更有意义。我只读了3或4个monad的类比,所以还不太了解它们,所以请随时教育我。

如果每个处理器在monad中修改其状态,以保持其历史记录并且它与每个处理步骤的id相关联。然后以某种方式monad能够将其状态切换到过去的步骤id并在该状态下使用monad运行系统。 monad将有一些机制(de)序列化自己进行存储。

(并且考虑到数据的大小......它实际上甚至不应该都在内存中,这意味着monad需要映射到磁盘,缓存等...)

是否有现成的图书馆/机制/方法/概念已经完成或协助完成我正在尝试做的事情?

1 个答案:

答案 0 :(得分:13)

相关问题