2

我对下面的代码有些不满意。随着我的发展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
4

1 回答 1

1

我不太明白您要做什么,但是您可以使用accumB定义为的组合器

accumB x e = stepper x (accumE x e)

删除 的定义playerInputE

在我看来,该changes功能使用正确。

于 2013-04-06T08:59:07.407 回答