Я хочу изменить свое состояние с функцией, которая зависит от старого состояния, но также вводит некоторую случайность. Моя функция f
выглядит следующим образом:purescript-halogen: изменить состояние с помощью эффективных вычислений
f :: State -> Eff (random :: RANDOM) State
Я думаю, мое состояние должно быть чистым, и я не имел ни малейшего представления о том, как избавиться от Eff
, кроме использования unsafePerformEff
, так что я сделал это:
eval :: Query ~> H.ComponentDSL State Query g
eval (Tick next) = do
H.modify (unsafePerformEff <<< f)
pure next
Это работает, но должен быть другой, более безопасный путь. Я уже добавил случайный эффект к моей основной функции:
main :: Eff (H.HalogenEffects (random :: RANDOM)) Unit
Но как eval
выглядеть? Может быть, modify
здесь не работает, и есть другой способ обновить состояние?
Purescript Halogen, side effect (random number) не работает для меня, так как f
зависит от старого состояния.
Хорошо, я только что нашел Halogen 'get' и' set', но я все еще получаю ошибки типа. – stholzm