max_shane
@max_shane
Javascript / Node.js dev

Почему в функциональном программировании нельзя применять циклы?

При объявлении цикла, мы присваиваем значение (let i = 0), и это значение не может быть изменено снаружи.
Каждый раз когда будет вызываться данная функция с циклом, i в данном случае всегда будет 0 на первой итерации.
И как второй вариант, мы можем передать в функцию аргумент который будет задавать значение счетчика i.
Так почему в функциональном программировании нельзя применять циклы?

Дополнение:
Мой вопрос можно перефразировать так: есть ли рациональный смысл соблюдать данные правила абсолютно и без исключений?

Вот пример:

const i = 666;

function count (a,b) {
	for (let i = 0; i < 10; i++) {
		console.log((a+b)*i);
	}
}
count(1,2);

console.log(i);


Данная функция чистая: она всегда будет давать один и тот же результат при одинаковых аргументах, и она не меняет какие-либо переменные вне себя и в глобальной области видимости. Получается полный отказ от циклов, это как заповедь: "Так сказал создатель, просто следуй этому правилу, не задавай вопросов".
  • Вопрос задан
  • 1101 просмотр
Решения вопроса 1
@Karpion
Функциональное программирование предполагает: любой переменной значение присваивается ровно один раз и не м.б. изменено. Это условие означает невозможность завершения цикла, причём любого: for, while, repeat-until.

Т.е. проблема не в начальном присваивании значения, а в последующих изменениях типа i++
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы