2012-09-30 70 views
1

這看起來應該很簡單,但如果我使用AcidState的Data.Acid.Memory.Pure模塊,如何從查詢中獲得純粹的值。我想我可以把這個問題概括爲「我如何從Update monad獲得任何價值?」。你看,我試圖寫一個測試,不運行的設施,工廠以下任務:從酸狀態查詢中獲取純數值

  • 更新純AcidState與對象
  • 查詢該對象出使用IxSet
  • 狀態
  • 比較查詢對象和更新返回的等價對象。

我需要一個純粹的「Bool」,以便與測試框架輕鬆集成。起初我以爲我只是使用Control.Monad.State中的runState,但我錯了(或者只是沒有做到)。我該怎麼辦?

回答

1

由於您使用Data.Acid.Memory.Pure,則可以使用update,和update_函數從該模塊(而不是從Data.Acid的那些)看純粹是事件的結果。和普通的不純的acid-state一樣,你不是簡單地「運行UpdateQuery單子」,你必須先將它們轉換成事件。用Data.Acid.Memory.Pure,這意味着你只需用Event的構造函數來包裝它們。