Eine Higher-Order-Funktion (Funktion höherer Ordnung) ist eine Funktion, die andere Funktionen als Argumente entgegennimmt, eine Funktion als Ergebnis zurückgibt — oder beides. Voraussetzung sind First-Class-Funktionen: Funktionen werden behandelt wie Zahlen oder Strings, also als normale Werte, die man speichern, übergeben und zurückgeben kann.

Die Klassiker: map, filter, reduce

Die bekanntesten Higher-Order-Funktionen verarbeiten Listen oder Arrays:

# Python
zahlen = [1, 2, 3, 4]
quadrate = list(map(lambda x: x*x, zahlen))      # [1, 4, 9, 16]
gerade   = list(filter(lambda x: x % 2 == 0, zahlen))  # [2, 4]
summe    = reduce(lambda a, b: a + b, zahlen)    # 10

In JavaScript stehen dieselben Ideen als Array-Methoden bereit: map(), filter(), reduce(). Statt Schleifen manuell zu schreiben, beschreibt man was mit den Elementen geschehen soll — die Higher-Order-Funktion übernimmt den Kontrollfluss.

Weitere Beispiele

  • sort() nimmt eine Vergleichsfunktion entgegen und erlaubt beliebige Sortierreihenfolgen.
  • Event-Handler und Listener sind Funktionen, die an ein Ereignis „angehängt“ werden.
  • Decorators und Middleware (etwa in Web-Frameworks) wickeln Funktionen in zusätzliche Logik ein.
  • debounce und throttle geben eine neue Funktion zurück, die Aufrufe zeitlich begrenzt.

Warum nützlich?

Higher-Order-Funktionen abstrahieren wiederkehrende Abläufe. Statt denselben Schleifen-Code zu duplizieren, schreibt man eine generische Funktion einmal und steckt die spezifische Logik als Parameter hinein. Das fördert Wiederverwendung, Lesbarkeit und Komposition — zentrale Ziele der funktionalen Programmierung.

Zusammenhänge

  • Ein Callback ist die konkrete Funktion, die an eine Higher-Order-Funktion übergeben wird.
  • Currying erzeugt Higher-Order-Funktionen, weil jeder Zwischenschritt eine Funktion zurückgibt.
  • Gemeinsam mit Immutability entstehen kleine, reine Bausteine, die sich gefahrlos kombinieren lassen.
  • Die Idee reicht bis in den Lambda-Kalkül zurück, wo Funktionen die einzigen Werte sind.

Verwandte Grundlagen: Funktion, Rekursion.