Получение чистых значений из запросов кислотных состояний

Это кажется чем-то простым, но как получить чистое значение из запроса, если я использую модуль AcidState Data.Acid.Memory.Pure. Я предполагаю, что могу обобщить вопрос: "Как мне получить какое-либо значение из монады Обновления?". Видите ли, я пытаюсь написать тест, который выполняет следующие стандартные задачи:

  • Обновляет чистый AcidState с объектом
  • Запрашивает этот объект из состояния с помощью IxSet
  • Сравнивает запрашиваемый объект и объект, возвращенный обновлением, для эквивалентности.

Мне нужен чистый "Bool", чтобы упростить интеграцию с тестовыми средами. Сначала я думал, что просто использую runState из Control.Monad.State, но я ошибся (или просто не сделал это правильно). Что я должен делать?

1 ответ

Так как вы используете Data.Acid.Memory.Pure, вы можете использовать update, query, а также update_ функции из этого модуля (вместо Data.Acid) смотреть на результат события чисто. Как с обычным, нечистым acid-state не просто "запустить Update а также Query Монады,"вы должны сначала преобразовать их в событие. Data.Acid.Memory.Pure это означает, что вы просто заключаете их в конструкторы Event,

Другие вопросы по тегам