Fachkonzept: Funktionen höherer Ordnung
Funktionen höherer Ordnung
Um einige Probleme elegant zu lösen, kann es hilfreich sein Funktionen zu entwerfen, die selbst Funktionen als Übergabedaten erhalten oder Funktionen als Rückgabe liefern. In der Funktionalen Programmierung lassen sich Funktionen dabei wie anderen Datentypen behandeln und entsprechend als Daten übergeben.
Funktionen, die Funktionen als Übergabedaten erhalten und/oder Funktionen als
Rückgabedatum liefern, nennen wir Funktionen höherer Ordnung.
Drei klassische Funktionen höherer Ordnung sind die Listenfunktionen:
- map
- filter
- fold
Signaturen von Funktionen höherer Ordnung
Die Signatur einer Funktion höheren Ordnung lässt sich dadurch erkennen, dass mehrere
->
in ihr erscheinen, da die Signaturen der akzeptierten übergebenen / zurückgegebenen Listen ebenfalls angegeben werden.
Beispielsweise besitzt die Funktion fold
die Signatur (%b (%a %b -> %b) (list-of %a) -> %b)
.
Beziehungsweise für einen möglichen Aufruf:
(fold 0 + (list 4 7 5 6 9))
die Signatur: (natural (number number -> number) (list-of natural) -> natural)
,
wobei (number number -> number)
der übergebenen Funktion +
entspricht.