Question

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

Était-ce utile?

La solution

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 au moins besoin de) son propre nom.

Une fermeture est une fonction qui peut accéder aux variables qui se trouvaient dans sa portée lexicale lors de sa déclaration, même après qu'elles soient tombées sur de la portée. Les fonctions anonymes ne doivent pas nécessairement être des fermetures, mais elles sont dans la plupart des langues et deviennent moins utiles quand elles ne le sont pas.

Un lambda est .. moins bien défini en 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 expression unique; rien de plus, et vous avez besoin d'une fonction nommée. Les Lambda sont des fermetures dans les deux langues.

Autres conseils

Aussi appelé fermetures ou fonctions anonymes. J'ai trouvé la meilleure description ici . Fondamentalement, bloc de code en ligne pouvant être passé comme argument à une fonction.

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

~ William Riley-Land

Il s’agit simplement d’une fonction anonyme déclarée inline, généralement attribuée à un délégué lorsque vous ne souhaitez pas écrire une fonction à part entière.

Dans des langages tels que lisp / scheme, ils sont souvent transmis assez librement en tant que paramètres de fonction, mais le langage utilisé dans C # trouve généralement lambdas utilisé uniquement pour une évaluation paresseuse des fonctions, comme dans linq, ou pour transformer le code de gestion des événements en bit terser.

Il n’existe pas vraiment de programme "lambda". Cela dépend de la langue, etc.

En bref, normalement une langue qui a "a lambdas" utilise le terme pour les fonctions anonymes ou, dans certains cas, les fermetures. Comme dans Ruby:

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

En réponse aux réponses précédentes:
-La chose importante à propos des fonctions anonymes n’est pas qu’elles n’ont pas besoin d’un nom.
-Les fermetures sont un concept séparé.
-Un article gigantesque sur Wikipédia 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 nombreuses langues qui implémentent ce que l'on appelle "lambdas". ajoutez du sucre syntaxique pour faciliter et accélérer l’écriture de ces fonctions abrégées, mais cela 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, il s'agit d'un "citoyen de première classe". dans la langue. Je peux faire toutes les choses importantes avec elle:

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

Extrait d'un 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, à la suite de l'utilisation du calcul lambda.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top