95 votes

Qu'est-ce qu'une Lambda ?

Quelqu'un pourrait-il donner une bonne description de ce qu'est une Lambda ? Nous avons une étiquette pour eux et ils sont sur la question des secrets de C#, mais je n'ai pas encore trouvé une bonne définition et explication de ce qu'ils sont en premier lieu.

1 votes

Pourquoi pas Article de Wikipédia sur le lambda calcul pour commencer ? Dans ce cas, il s'agit de Article de Wikipédia sur la programmation fonctionnelle en guise de suivi.

2 votes

Duplication possible de Qu'est-ce qu'une fonction lambda ?

0 votes

L'expression amda expliquée aquí magnifiquement.

135voto

Eevee Points 18333

Les fermetures, les lambdas et les fonctions anonymes ne sont pas nécessairement identiques.

Une fonction anonyme est une fonction qui n'a pas (ou, du moins, qui n'a pas besoin) de nom propre.

Une fermeture est une fonction qui peut accéder aux variables qui se trouvaient dans sa portée lexicale lorsqu'elle a été déclarée, même après qu'elles sont tombées en désuétude. sortir du champ d'application. Les fonctions anonymes ne doivent pas nécessairement être des fermetures, mais elles le sont dans la plupart des langages et deviennent moins utiles lorsqu'elles ne le sont pas.

Un lambda n'est pas aussi bien défini en informatique. De nombreux langages n'utilisent même pas le terme ; ils se contentent de les appeler closures ou fonctions anon ou inventent leur propre terminologie. En LISP, une lambda est simplement une fonction anonyme. En Python, une lambda est une fonction anonyme spécifiquement limitée à une seule expression ; au-delà, vous avez besoin d'une fonction nommée. Les lambdas sont des fermetures dans les deux langages.

0 votes

Le terme peut être interprété comme impliquant le calcul lambda fr.wikipedia.org/wiki/Lambda_calculus

0 votes

J'aurais dû avoir plus d'un vote positif pour cette question. J'ai vu tant de réponses techniques s'enliser dans la terminologie, mais celle-ci est concise et met immédiatement l'accent sur l'essentiel.

9 votes

+1 pour ne pas utiliser le terme "close over" pour définir une fermeture comme si cela rendait les choses plus claires.

19voto

Gulzar Nazim Points 35342

Également appelées fermetures ou fonctions anonymes J'ai trouvé la meilleure description aquí . A la base, un bloc de code en ligne qui peut être transmis comme argument à une fonction.

18voto

wprl Points 6139

Le terme "Lambda" fait référence à la Calcul lambda ou à une expression lambda spécifique. Le calcul lambda est une branche de la logique et des mathématiques qui traite des fonctions. les langages de programmation fonctionnels .

~ William Riley-Land

8voto

JasonTrue Points 13615

Il s'agit simplement d'une fonction anonyme déclarée en ligne, le plus souvent assigné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 passés de manière assez libre en tant que paramètres de fonction, mais en C#, les lambdas ne sont généralement utilisés que pour l'évaluation paresseuse de fonctions, comme dans linq, ou pour rendre le code de gestion d'événements un peu plus terser.

5voto

rfunduk Points 15267

Il n'existe pas vraiment de lambda en programmation. Cela dépend du langage, etc.

En bref, un langage qui "possède des lambdas" utilise normalement ce terme pour désigner des fonctions anonymes ou, dans certains cas, des fermetures. C'est le cas en Ruby :

f = lambda { return "this is a function with no name" }
puts f.call

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X