Выражать то что должно иметь состояние через ФП это мазохизм
Да норм. Гоняешь рекурсией огромный объект Game со всем что в ней есть и в каждом вызове возвращаешь новый Game. Таки да, учитывая что это все надо хотяб раз 30 в секунд сделать - GC улыбается и машет ручкой. Я таки подозреваю что в Haskell есть для всего этого оптимизации чтобы и в прям весь гейм со всем что в нем есть не пересоздавать