Cela dépend de la partie de votre question sur laquelle vous mettez l'accent. S'il s'agit spécifiquement de la propriété d'être anonyme pour des fonctions anonymes, alors la seule réponse est qu'il s'agit de valeurs non liées . Si vous parlez des fonctions en général, les fonctions anonymes sont probablement la manifestation la plus visible de l'utilisation du lambda calcul dans un cadre fonctionnel, pour les langages applicatifs .
En fait, du point de vue du calcul lambda, les expressions lambda sont la construction très syntaxique utilisée pour créer des liaisons. Rappelez-vous la notation utilisée dans le calcul lambda:
λ f. λ x . FX
où et sont liés dans l'expression interne . Chaque expression lambda définit la liaison et agit ainsi comme un contexte local pour les liaisons de nom.FXFX
Un langage offre généralement des moyens, tels que let
(ML comme langages, schémas) ou define
(schéma) pour créer des liaisons utilisables au niveau supérieur (ou dans des constructions syntaxiques plus complexes que des fonctions, comme des modules ou des objets), mais le seul outil nécessaire pour les liaisons sont le lambda à des niveaux inférieurs.
Si vous regardez des langues comme le schéma ou les dialectes lisp, leur fondement même est le lambda calcul, et de nombreuses formes spéciales sont vraiment des lambdas enrobées de sucre.
Pour les langues concaténatives , l'histoire est légèrement différente. Les lambdas ne sont pas nécessaires et en fait contre-productifs. Quel est l'intérêt de définir des lambdas anonymes, quand tout est fonction ?
Il existe en quelque sorte une dualité entre ces deux types de langues. Le dernier se concentre sur la combinaison de fonctions sans points et essaie donc de tout représenter comme des fonctions, tandis que le premier travaille sur un calcul plus élaboré et s'efforce d'avoir des fonctions comme valeurs de première classe, comme toutes les autres valeurs du langage. À cet égard, on pourrait voir les lambdas comme le résultat de cet effort.
Quelques pointeurs sur le sujet introduits (mal) dans cette réponse: