Сообщение от
anthrwpos
Чистота функции - это свойство самой функции, оно не должно зависеть от того, как устроена ваша остальная программа.
О, я тоже так думаю.
А такой код? Это чистая функция?
На всякий, случай: static объявляет такую переменную, которая сохраняет своё состояние между вызовами функции
Код:
int abcd2() {
static int counter; /* обращаем внимание на слово static */
counter = counter + 1;
return counter;
}
Сообщение от
anthrwpos
Переменная которую использует эта функция глобальная. Её чтение равносильно чтению ввода, потому что к этой переменной имеет доступ любая функция в программе, в том числе и некая (предполагаемая) функция, которая может осуществлять ввод.
Если вы говорите, что "чистота" это свойство самой функции, то непонятно как тут же поворачивается язык говорить о "к этой переменной имеет доступ некая (предполагаемая) функция, которая может осуществлять ввод".
На этом моменте я вы предложил вам обратиться к определению чистой функции. И не к вашему личному определению, а определению из более надёжного источника. Wikipedia, книга, учебник, статья.
В коде abcd2 к переменной counter уж точно никогда не сможет обратиться ни одна другая функция.
Что? abcd2, получается, чистая функция?