Господа хаскелисты, как быть в таких ситуациях, когда наличие состояния фактически диктуется условиями задачи?
Например в игре это здоровье, положение на карте, патроны итд...
Про монады State и IO я знаю, но при попытке упаковать состояние в какой-то тип, напарываюсь на проблему изменения лишь одного параметра.
Изучал по этому поводу чужие исходники и увидел такие вот жуткие вещи:
type GameState = (Tick, Gun, Bullets, Invaders, Bullets, Explosions, Score, Lives, Level)
getScore :: GameState -> Score
getScore (_, _, _, _, _, _, s, _, _) = s
modifyScoreInState :: GameState -> Score -> GameState
modifyScoreInState (tick, gun, gunBullets, invaders, invBullets, explosions, oldScore, lives, level) newScore
= (tick, gun, gunBullets, invaders, invBullets, explosions, newScore, lives, level)
Но что-то мне подсказывает, что это не найлучший подход. Тем более, если мне понадобится добавить параметр, то придется все переписывать =/