Laut Wikipedia:
In der Computerprogrammierung kann eine Funktion als rein beschrieben werden, wenn beide Aussagen über die Funktion gelten: Die Funktion wertet immer den gleichen Ergebniswert bei gleichen Argumentwerten aus. Der Funktionsergebniswert kann weder von versteckten Informationen oder Zuständen abhängen, die sich im Verlauf der Programmausführung oder zwischen verschiedenen Programmausführungen ändern können, noch von externen Eingaben von E / A-Geräten. Die Auswertung des Ergebnisses verursacht keine semantisch beobachtbaren Nebenwirkungen oder Ausgaben, wie z. B. die Mutation veränderlicher Objekte oder die Ausgabe an E / A-Geräte.
Ich frage mich, ob es möglich ist, eine Funktion zu schreiben, die berechnet, ob eine Funktion rein ist oder nicht. Beispielcode in 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
, hilft es nicht, die Funktion viele Male auf ein konsistentes Verhalten zu prüfen. Wenn Sie jedoch Zugriff auf die Funktionsdefinition haben, ist der Beweis trivial.
say
Anrufe, console.log
die unrein say
sind, auch unrein.