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.[1]

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

Bearbeiten

Quellen

Bearbeiten
  1. Rod Burstall: Christopher Strachey—Understanding Programming Languages. In: Higher-Order and Symbolic Computation. Band 13, Nr. 1-2. Kluwer academic publishers, 2000, ISSN 1388-3690, S. 52, doi:10.1023/A:1010052305354 (englisch).

📚 Artikel Terkait di Wikipedia

Liste von Singleton-Implementierungen

Instanziierung) class Singleton { private static var _instance:SingletonClass; private function Singleton() { } public static function get instance():Singleton

Besucher (Entwurfsmuster)

realisieren. abstract class Element { abstract function entgegennehmen(Besucher $besucher); abstract function getName(); } class ElementA extends Element

Abstrakte Fabrik

Produkt A abstract class Spielbrett { abstract function aufstellen(); } // abstraktes Produkt B abstract class Spielfigur { abstract function bewegen(); } //

Stellvertreter (Entwurfsmuster)

$this->_Breite; } public function getHoehe() { return $this->_Hoehe; } public function getPfad() { return $this->_Pfad; } } // echtes Subjekt class EchtesBild extends

Bujan-Klasse

ru/news/opk/content/20196111636-HWPEw.html https://function.mil.ru/news_page/country/more.htm?id=12268831@egNews https://function.mil.ru/news_page/country/more.htm?id=12341468@egNews

Kommando (Entwurfsmuster)

} } abstract class Kommando { abstract function ausfuehren(); } class Aufrufer { private $history = array(); public function speichernUndAusfuehren(Kommando

Denholm Elliott

sehen, in denen er vielschichtige, schillernde Charaktere von Upper-Middle-Class-Gentlemen über Butler und Professoren bis hin zu schmierigen und trinkfreudigen

Linker (Computerprogramm)

Unterprogramm: class ClassA; class ClassB; function(class A*); // Ist deutlich unterschieden von function(class B*); wenn ClassA und ClassB in keiner Weise