First-Class-Funktion
Eine First-Class-Funktion ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}, {{#invoke:Vorlage:lang|full|CODE=de|SCRIPTING=Latn|SERVICE=deutsch}} etwa „Funktion erster Klasse“) bezeichnet in der Programmierung eine Funktion, die
- einer anderen Funktion als Argument übergeben,
- von einer anderen Funktion als Wert zurückgegeben,
- einer Variablen zugewiesen,
- in einer Datenstruktur gespeichert und
- zur Laufzeit erzeugt
werden kann. Teilweise gilt auch die Möglichkeit, anonyme Funktionen zu definieren, als Kriterium für eine first-class-Funktion.
Erst damit wird es möglich, Closures zu erzeugen, anonyme Funktionen zu definieren oder Currying durchzuführen.
Der Begriff wurde von Christopher Strachey im Kontext functions as first-class citizens Mitte der 1960er Jahre geprägt.<ref name="burstall"/>
In vielen modernen Programmiersprachen (wie Haskell, JavaScript, Smalltalk und insbesondere verschiedenen Lisp-Dialekten wie Scheme) sind alle Funktionen first-class. Einen für Anfänger sehr leicht verständlichen Zugang zu diesem Konzept bietet die bildungsorientierte visuelle Programmiersprache Snap! (BYOB).
Siehe auch
Quellen
<references> <ref name="burstall">{{#invoke:Vorlage:Literatur|f}}</ref> </references>