Відповідно до Вікіпедії:
У комп'ютерному програмуванні функція може бути описана як чиста, якщо обидва ці твердження про функцію утримуються: Функція завжди оцінює одне і те саме значення результату, задане тим самим значенням аргументів. Значення результату функції не може залежати від будь-якої прихованої інформації або стану, яка може змінюватися в ході виконання програми або між різними виконаннями програми, а також не може залежати від зовнішнього вводу пристроїв вводу-виводу. Оцінка результату не спричиняє жодних семантично помітних побічних ефектів або результатів, таких як мутація змінних об'єктів або вихід на пристрої вводу / виводу.
Мені цікаво, чи можна записати функцію, яка обчислює, чи функція чиста чи ні. Приклад коду в Javascript:
function sum(a,b) {
return a+b;
}
function say(x){
console.log(x);
}
isPure(sum) // True
isPure(say) // False
if (rand(1000000)<2) return WRONG_ANSWER
, зондування функції багато разів для послідовної поведінки не допоможе. Але, якщо у вас є доступ до визначення функції, доказ тривіальний.
say
дзвінки console.log
також say
є нечистими.