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 andere Datentypen behandeln und entsprechend als Daten übergeben.
	Funktionen, die Funktionen als Übergabedaten erhalten und/oder Funktionen als
    Rückgabedaten 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))
(natural (number number -> number) (list-of natural) -> natural),
wobei (number number -> number) der übergebenen Funktion + entspricht.    	 
  