В настоящее время я изучаю функциональное программирование в свободное время с Scala, и у меня вопрос о незанятом новичке.
Я вижу элегантность наличия неизменных объектов при выполнении чего-то вроде вычисления вейвлет-преобразования Хаара, т.е. когда сами данные, представленные объектами, не изменяются.
Но я видел блог, в котором у кого-то была небольшая игра в качестве примера, демонстрирующего неизменность. Если объект существа получил урон, он не изменил свое состояние - он вернул новый объект существа с новыми hitpoints и новый флаг "aggro to X". Однако, если мы планируем создать что-то вроде MMORPG, скажем, World of Warcraft. Сто игроков на поле битвы... возможно, тысячи атак и эффекты заклинания полировки/дебаффа, влияющие на них по-разному. Можно ли все-таки создать систему с полностью неизменяемыми объектами? Мне казалось, что каждый "тик" будет иметь гигантский рой новых инстанций. И чтобы получить текущий действительный экземпляр объектов, всем клиентам постоянно приходилось проходить какой-то центральный объект "gameworld", или?
Имеет ли шкала функционального программирования это, или это случай "лучшего инструмента для лучшей работы, возможно, не неизменяемого здесь"?