Есть ли проблема с тем, что Событие и Поведение имеют одинаковое начальное значение?

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

1 ответ

Решение

Я не совсем понимаю, что вы пытаетесь сделать, но вы можете использовать accumB комбинатор, который определяется как

accumB x e = stepper x (accumE x e)

удалить определение playerInputE,

Мне кажется, что changes Функция используется правильно.

Другие вопросы по тегам