Es hängt davon ab, welchen Teil Ihrer Frage Sie hervorheben. Wenn es speziell die Eigenschaft ist, für anonyme Funktionen anonym zu sein, besteht die einzige Antwort darin, dass es sich um ungebundene Werte handelt . Wenn Sie über Funktionen im Allgemeinen sprechen, sind anonyme Funktionen wahrscheinlich die sichtbarste Manifestation der Verwendung von Lambda-Kalkül in einer funktionalen Umgebung für anwendungsbezogene Sprachen .
Tatsächlich sind Lambda-Ausdrücke aus Sicht der Lambda-Berechnung das sehr syntaktische Konstrukt, das zum Erstellen von Bindungen verwendet wird. Erinnern Sie sich an die im Lambda-Kalkül verwendete Notation:
λ f. λ x . fx
fxfx
Eine Sprache bietet normalerweise Möglichkeiten wie let
(ML wie Sprachen, Schema) oder define
(Schema), um Bindungen zu erstellen, die auf der obersten Ebene (oder in syntaktischen Konstrukten, die komplexer sind als Funktionen wie Module oder Objekte) verwendet werden können, aber das einzig benötigte Werkzeug für Bindungen ist das Lambda auf niedrigeren Ebenen.
Wenn Sie sich Sprachen wie Schema- oder Lisp-Dialekte ansehen, ist ihre Grundlage Lambda-Kalkül, und viele spezielle Formen sind wirklich mit Zucker überzogene Lambdas.
Bei verketteten Sprachen ist die Geschichte etwas anders. Lambdas sind nicht notwendig und tatsächlich kontraproduktiv. Was bringt es, anonyme Lambdas zu definieren, wenn alles eine Funktion ist ?
Es gibt irgendwie eine Dualität zwischen diesen beiden Arten von Sprachen. Letzteres konzentriert sich auf die punktfreie Funktionskombination und versucht daher, alles als Funktionen darzustellen, während Ersteres an einem ausgefeilteren Kalkül arbeitet und sich bemüht, Funktionen wie erstklassige Werte wie alle anderen Werte der Sprache zu haben. In dieser Hinsicht konnte man Lambdas als Ergebnis dieser Bemühungen sehen.
Einige Hinweise zu dem in dieser Antwort (schlecht) eingeführten Thema: