从酸状态查询中检索纯值

时间:2012-09-30 18:51:16

标签: haskell acid-state

这似乎应该很简单,但如果我使用AcidState的Data.Acid.Memory.Pure模块,如何从查询中获得纯值。我想我可以将这个问题概括为“如何从Update monad中获取任何价值?”。你看,我正在尝试编写一个执行以下普通任务的测试:

  • 使用对象
  • 更新纯AcidState
  • 使用IxSet
  • 查询对象超出状态
  • 比较查询对象和Update返回的等效对象。

我需要一个纯粹的“Bool”,以便轻松地与测试框架集成。起初我以为我只是使用Control.Monad.State中的runState但我错了(或者只是没有做对)。我该怎么办?

1 个答案:

答案 0 :(得分:1)

由于您使用的是Data.Acid.Memory.Pure,因此您可以使用该模块中的updatequeryupdate_函数(而不是Data.Acid中的函数)纯粹看一个事件的结果。与常规的,不纯的acid-state一样,您不只是“运行UpdateQuery monad”,您必须先将它们转换为事件。使用Data.Acid.Memory.Pure,这意味着您只需使用Event的构造函数包装它们。