我发现以下代码不满意。在我开发bGameState
时,我会添加更多活动。 playerInputE
(我想其他Events
)共享相同的初始值会导致问题吗?换句话说,我的初始设计是否足以建立起来?
此外,是否有使用changes
的替代方法?我认为我符合正确使用的标准,但我不确定。
makeNetworkDescription :: AddHandler PlayerCommand ->
TChan GameState ->
IO EventNetwork
makeNetworkDescription addCommandEvent gsChannel = compile $ do
eInput <- fromAddHandler addCommandEvent
let playerInputE = accumE initialGS $ updateGS <$> eInput
bGameState = stepper initialGS playerInputE
eGameState <- changes bGameState
reactimate $ (\n -> (atomically $ writeTChan gsChannel n)) <$> eGameState
答案 0 :(得分:1)
我不太明白你要做什么,但你可以使用定义为
的accumB
组合子
accumB x e = stepper x (accumE x e)
删除playerInputE
。
在我看来,changes
功能使用正确。