【发布时间】:2017-03-06 10:09:26
【问题描述】:
我想用一个依赖于旧状态的函数来修改我的状态,但也引入了一些随机性。我的函数f 看起来像这样:
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,但仍然出现类型错误。
标签: purescript halogen