- Funktion höherer Ordnung
-
Eine Funktion höherer Ordnung ist in der Informatik eine Funktion, die Funktionen als Argumente erhält oder Funktionen als Ergebnis liefert.
Der Begriff wird insbesondere im Lambda-Kalkül verwendet, der theoretischen Grundlage der Funktionalen Programmierung. Dort ist er eng mit dem Currying verbunden, einem Verfahren, das Funktionen mit mehreren Argumenten in mehrere einparametrige Funktionen umwandelt. Diese Transformation hat ihre Grundlage in der Gleichmächtigkeit der Funktionenräume und für beliebige Mengen A,B,C.
Folgende Funktion ist eine Funktion höherer Ordnung:Diese Funktion bildet jeden x-Wert auf eine Funktion ab, die eine (übergebene) natürliche Zahl zu x addiert. Beispielsweise m wird wiederum auf x+m abgebildet: (f(10.5))(1) = 11.5
Aus dem Lambda-Kalkül stammt der K-Kombinator . (K(x))(y) ist für alle y konstant.
Ein bekanntes Beispiel für eine Funktion höherer Ordnung ist der Differentialoperator, weil er Funktionen auf Funktionen abbildet (Ableitung und Stammfunktion). Weitere wichtige Beispiele sind die so genannten Distributionen.
Beispiel aus der funktionalen Programmierung
In den meisten funktionalen Programmiersprachen wie z.B. Haskell ist die Funktion höherer Ordnung
map
definierbar. Sie erhält als Argument eine Funktionf
und gibt eine Funktion zurück, dief
auf jedes Element einer übergebenen Liste anwendet. Es ist zu beachten, dassmap
Funktionen beliebigen Typs als Argument erhalten kann (angedeutet durch die Typvariablena
undb
).map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x:xs) = (f x):map f xs map (\x -> x^2) [1,2,3,4] wird ausgewertet zu [1,4,9,16]
Quellen
Kategorien:- Programmiersprachelement
- Theoretische Informatik
Wikimedia Foundation.