Получение чистых значений из запросов кислотных состояний
Это кажется чем-то простым, но как получить чистое значение из запроса, если я использую модуль 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
,