1

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

  • 用一个对象更新一个纯 AcidState
  • 使用 IxSet 查询超出状态的对象
  • 比较查询对象和更新返回的对象是否相等。

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

4

1 回答 1

1

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

于 2012-09-30T19:17:58.643 回答