First-Class-Funktion
# First-Class-Funktion

Eine First-Class-Funktion (englisch first-class function, 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.

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).

