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