Я много читаю о функциональном программировании и неизменяемости, и у меня возникла небольшая проблема с пониманием того, как можно создать даже простую игру тральщика, не изменяя состояние? Очевидно, что у вас есть начальное состояние таблицы тральщика в массиве ([0,0,0,0] - все плитки скрыты). Но как вы можете показать плитку, если не записываете это изменение состояния ([0,0,1,0] - первая плитка во втором ряду открыта) ??
Вот простой пример того, что я говорю:
let minesweeperTable2x2 = [0,0,0,0];
let revealTile = ( tileNumber ) => {
minesweeperTable2x2[tileNumber] = 1;
}
console.log(minesweeperTable2x2); // [0,0,0,0]
revealTile(2);
console.log(minesweeperTable2x2); // [0,0,1,0]
revealTile(0);
console.log(minesweeperTable2x2); // [1,0,1,0]
revealTile(1);
console.log(minesweeperTable2x2); // [1,1,1,0]
revealTile(3);
console.log(minesweeperTable2x2); // [1,1,1,1]
Есть ли кто-нибудь, кто занимается функциональным программированием и неизменяемостью и может объяснить мне это путем преобразования кода, в который я написал парадигма функционального программирования, уважающая полную неизменность ???