En réponse aux réponses précédentes:
-La chose importante à propos des fonctions anonymes n'est pas qu'elles ne nécessitent pas de nom.
-Les fermetures sont un concept distinct.
-Un article gigantesque de wikipedia ne rend pas cela plus clair.
Voici ma réponse en 3 parties:
1. Un lambda est une fonction qui est aussi une expression. C'est la chose importante.
2. De nombreux langages qui implémentent des soi-disant «lambdas» ajoutent du sucre syntaxique pour rendre l'écriture de ces courtes fonctions plus facile et plus rapide, mais ce n'est pas obligatoire.
3. Certaines langues peuvent exiger qu'un lambda n'ait aucun effet secondaire . Ce serait un lambda plus pur au sens fonctionnel.
Lorsqu'une fonction est une expression, c'est un «citoyen de première classe» dans la langue. Je peux faire toutes les choses importantes avec:
x = lambda(){ return "Hello World"; }
doit( 1, 2, lambda(a,b){ return a > b; }, 3 )
x = (lambda(a){ return a+1; }) + 5 // type error, not syntax error
(lambda(a,b){ print(a); log(b); })( 1, 2 ) // () is valid operator here