Pure Funktion

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Als pure Funktion bezeichnet man eine Funktion, deren Rückgabewert ausschließlich von ihren Argumenten abhängt und die keine Nebenwirkungen entfaltet, vergleichbar einer Abbildung in der Mathematik.

Abgrenzung

In einem mathematischen Ausdruck kann die Anwendung einer Funktion auf ein Argument durch den Wert ersetzt werden, auf den das Argument abgebildet wird, ohne dass dadurch die Bedeutung des Ausdrucks verändert wird. Dies folgt direkt aus der Definition des Begriffs der Funktion. Bezogen auf Funktionen in Programmiersprachen ist dies hingegen nicht immer der Fall. Betrachten wir hierzu ein Beispiel:


Beispiel
// Example for impure function

let x = 2;


function f(n) {
    return x *= n;
}


Die Funktion f berechnet das Produkt zweier Zahlen, wobei jedoch nur ein Faktor als Argument übergeben wird. Der andere Wert wird über eine globale Variable namens x ermittelt. Diese Variable wird darüber hinaus mit dem Ergebnis der Multiplikation überschrieben. Hier handelt es sich um keine pure Funktion, denn es wird zum einen durch die Zuweisung an x der Zustand des Programms verändert – die Funktion entfaltet also eine Nebenwirkung, zum anderen hängt der Rückgabewert der Funktion vom Wert der globalen Variable x zum Zeitpunkt des Funktionsaufrufs ab.


Beispiel
// Example for pure function

function g(n) {
    return 2 ** n;
}


Die Funktion g aus diesem Beispiel ist hingegen eine pure Funktion. Sie berechnet Potenzen der Zahl 2, wobei der Exponent als Argument übergeben wird. Im Körper der Funktion gibt es keine freien Variablen, das Ergebnis der Berechnung hängt also nur davon ab, mit welchem Wert der formale Parameter n initialisiert wird. Weder hat der Zustand des Programms Einfluss auf den Rückgabewert der Funktion, noch verändert die Funktion während der Ausführung den Zustand des Programms.

Bedeutung

Pure Funktionen besitzen die Eigenschaft, referenziell transparent zu sein. Das heißt, im Sinne einer Termersetzung kann ein Aufruf einer solchen Funktion durch den zugehörigen Rückgabewert ersetzt werden, ohne dadurch das Programm zu verändern. Oder anders ausgedrückt: Das Ergebnis des Aufrufs einer puren Funktion ist unabhängig vom Zeitpunkt seiner Auswertung. Dies führt dazu, dass pure Funktionen im Allgemeinen leichter zu verstehen sind als Funktionen ohne entsprechende Eigenschaften. Darüber hinaus vereinfachen solche Funktionen Verfahren zum formalen Nachweis der Korrektheit eines Programms.

Weblinks