Quelqu'un pourrait-il fournir une bonne description de ce qu'est une Lambda? Nous avons une balise pour eux et ils sont sur les secrets de la question C #, mais je n'ai pas encore trouvé une bonne définition et une explication de ce qu'ils sont en premier lieu.
93
Réponses:
Les fermetures, les lambdas et les fonctions anonymes ne sont pas nécessairement la même chose.
Une fonction anonyme est une fonction qui n'a pas (ou, du moins, n'a pas besoin) de son propre nom.
Une fermeture est une fonction qui peut accéder à des variables qui étaient dans sa portée lexicale lorsqu'elle a été déclarée, même après qu'elles sont devenues hors de portée. Les fonctions anonymes ne doivent pas nécessairement être des fermetures, mais elles sont dans la plupart des langues et deviennent un peu moins utiles lorsqu'elles ne le sont pas.
Un lambda n'est pas aussi bien défini en ce qui concerne l'informatique. Beaucoup de langues n'utilisent même pas le terme; au lieu de cela, ils les appelleront simplement des fermetures ou des fonctions anon ou inventeront leur propre terminologie. Dans LISP, un lambda est simplement une fonction anonyme. En Python, un lambda est une fonction anonyme spécifiquement limitée à une seule expression; rien de plus, et vous avez besoin d'une fonction nommée. Les lambdas sont des fermetures dans les deux langues.
la source
Aussi appelé fermetures ou fonctions anonymes .. J'ai trouvé la meilleure description ici . Fondamentalement, bloc de code en ligne qui peut être passé en argument à une fonction.
la source
«Lambda» fait référence au Lambda Calculus ou à une expression lambda spécifique. Le calcul lambda est essentiellement une branche de la logique et des mathématiques qui traite des fonctions et est la base des langages de programmation fonctionnelle .
~ William Riley-Land
la source
Il s'agit simplement d'une fonction anonyme déclarée en ligne, le plus souvent attribuée à un délégué lorsque vous ne souhaitez pas écrire une fonction à part entière.
Dans des langages comme lisp / scheme, ils sont souvent transmis assez libéralement en tant que paramètres de fonction, mais l'idiome en C # trouve généralement que les lambdas sont utilisés uniquement pour l'évaluation paresseuse des fonctions, comme dans linq, ou pour rendre le code de gestion des événements un peu terser.
la source
Il n'y a pas vraiment de «lambda» dans la programmation. Cela dépend de la langue, etc.
En bref, normalement un langage qui «a des lambdas» utilise le terme pour des fonctions anonymes ou, dans certains cas, des fermetures. Comme ça, en Ruby:
la source
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:
la source
Extrait de wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
Dans les langages de programmation tels que Lisp et Python, lambda est un opérateur utilisé pour désigner des fonctions anonymes ou des fermetures, après l'utilisation du calcul lambda.
la source