Was ist eine erstklassige Funktion?
"First-Class-Funktion" ist ein Begriff, der in der Computerprogrammierung und Informatik auf eine Computerprogrammiersprache angewendet werden kann, wenn die Behandlung von Funktionen eine Reihe von Richtlinien hält, obwohl der gesamte Umfang und die Tiefe dieser Richtlinien nicht offiziell vereinbart sind. Um eine erstklassige Funktion Computerprogrammiersprache zu haben, ist die Hauptfunktion, die unterstützt werden muss, die Fähigkeit, Funktionen als Argumente an andere Funktionen zu übergeben. Eine Funktion muss auch einer Variablen zugeordnet werden, damit sie gespeichert werden kann. Andere Eigenschaften, die verwendet werden, um zu bestimmen, was eine erstklassige Funktion ausmacht, umfassen die Fähigkeit, zur Laufzeit dynamisch eine Funktion zu erzeugen, und die Fähigkeit der Sprache, eine Funktion als Rückgabewert einer anderen Funktion zu haben. Sprachen, die die erstklassige Funktionsarchitektur unterstützen, ermöglichen ein hohes Maß an Abstraktion und bieten in einigen Fällen auch einen Mechanismus für die dynamische Codeerzeugung der Laufzeit.
Wenn der Begriff "Funktion" in einem locker definierten Sinne verwendet wird, ist das Konzept der Übergabe einer Funktion innerhalb eines Programms durch Variablen nicht unbedingt einzigartig für Sprachen, die die Erstklasse-Funktionsunterstützung nativ implementieren. Die Fähigkeit, Codeblöcke an Funktionen zu übergeben oder nicht-dynamische Code aus einer Funktion zurückzugeben, kann in vielen Programmiersprachen durch verschiedene Mechanismen problemlos erfolgen. Einer der strengen Teile der Definition einer erstklassigen Funktionssprache ist jedoch, dass die Handhabung von Funktionen als Variablen nativ erfolgen muss, ohne dass Metadaten wie bedingte Definieren und ohne einen Kompilierer aufgerufen werden, um ein Stück Code neu zu kompilieren. Der Begriff "Funktion" wird auch verwendet, um sich auf unabhängige Codeblöcke zu beziehen, die für sich genommen werden, was bedeutet, dass sie nicht die als Methoden bezeichneten Codeblöcke in objektorientierten Programmiersprachen oder die Blöcke enthalten, die manchmal in anderen Sprachen als Verfahren bezeichnet werden.
Wenn eine Sprache istEinige Entwurfsmuster sind so konzipiert, dass erstklassiger Funktionscode direkter implementiert werden kann als in anderen Sprachen. Eine Funktion kann eine Funktion als Variable empfangen und dann eine neue Funktion erstellen und die neue Funktion in den aufrufenden Code zurückgeben. Dadurch wird ein Mechanismus für die Erstellung von Programmcode für Laufzeit erstellt. Dies kann auch die Verwendung von Funktionen in Echtzeit-Benutzer in der Sprache ermöglichen, ohne dass Prozesse wie Reflexion oder Bewertung verwendet werden.
Einige der grundlegendsten Verwendungen für die erstklassige Funktionsarchitektur umfassen das Erstellen generischer Funktionen, die leicht wiederverwendet werden können, und rekursive mathematische Algorithmen, die ihre Gleichungen im Fortschritt selbst modifizieren können. Eine ähnliche, fortschrittlichere Verwendung für erstklassige Mechanismen ist die Implementierung des Polymorphismus in Sprachen, in denen es nicht spezifisch implementiert wird. Auf diese Weise können Funktionen mit derselben Funktionssignatur aufgerufen werden, aber Code basierend auf dem Kontext in WHI ausführench es wurde genannt, manchmal durch Übergabe einer Schlüsselfunktion an die polymorphe Funktion.