Qu'est-ce que le code «lambda»?

16

J'ai récemment entendu des gens dire que le code était "lambda". Je n'ai jamais entendu parler de cette phrase auparavant. Qu'est-ce que ça veut dire?

Oliver Moran
la source
Ça faisait. Plusieurs fois. Je l'ai même essayé plusieurs fois - mais malheureusement sans succès. Vous aurez peut-être plus de chance? Merci à ceux qui ont répondu.
Oliver Moran
10
@Oliver, le fait de poser une question ici consiste également à montrer ce que vous avez fait pour répondre à cette question afin que les gens n'essaient pas les mêmes choses que vous et restent coincés. En spécifiant où dans les liens Wikipédia ou Google, vous avez trouvé que vous étiez confus, cela garantit une meilleure réponse à votre question car, au niveau général, la réponse peut ne pas être ce que vous vouliez, car elle fait simplement référence à ce que vous n'avez pas obtenu auparavant. Pensez simplement à essayer ce que quelqu'un d'autre publie et voyez ce qui se passe. Vous serez peut-être surpris des résultats.
JB King
7
Je sens qu'un rap pourrait en être fait - "mon code si lambda". Mais je ne peux pas rythmer ça vaut rien. :-)
Paul Nathan
1
@JB King + JB King - Merci pour vos commentaires courtois. En termes généraux, ce que vous dites tous les deux est sensé. Cependant, selon la requête, parfois une question brève et ouverte est plus efficace pour obtenir les types de réponses qui ne se trouvent pas ailleurs. Ma question a suscité précisément le type de réponses que je cherchais. Je l'ai formulé pour que ce soit le cas. J'espère que les réponses ci-dessous seront utiles à d'autres ayant la même question. Il est ironique que je sois satisfait des réponses en même temps que certains sont déçus par la question.
Oliver Moran
2
@Paul Nathan - vous êtes un code tellement lambda que vous n'avez clairement jamais prévu de travailler selon une norme; c'est plus rugueux qu'une ponceuse!
glenatron

Réponses:

20

Les expressions lambda sont soit une abstraction (parfois appelée fonction anonyme), une application ou une variable (la plupart des langues ajoutent également des constantes à cette liste). Les termes lambda ne sont pas nécessairement des fonctions et ne sont pas nécessairement transmis en tant que paramètres, bien que ce soit une pratique courante.

Un exemple courant d'expressions lambda en C #

Par exemple:

List<int> items = new List<int>();
items.add(1);
items.add(2);
items.add(1);
items.add(3);

int CountofOnes = items.FindAll(item => item == 1).Count();

Console.Out.WriteLine(CountofOnes);

produira: 2

Dans ce code, je passe une construction lambda à la FindAllfonction de l' Listobjet .NET .

items.FindAll(item => item == 1)

Le lambda dans cet appel exécute une équation simple et retourne un booléen, indiquant FindAllquoi faire.

Timothy Groote
la source
2
Ce n'est pas tout à fait vrai. L'expression lambda est soit une abstraction (pas nécessairement petite ), une application ou une variable (la plupart des langues ajoutent également des constantes à cette liste). Les termes lambda ne sont pas nécessairement des fonctions et ne sont pas nécessairement transmis en tant que paramètres.
SK-logic
Vous avez raison, je vais modifier la réponse par souci de clarté.
Timothy Groote
3
Donnez-moi un exemple d'une expression lambda qui n'est pas une fonction, s'il vous plaît.
Ingo
1
@Ingo, c'est bien sûr une terminologie du calcul lambda. en.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SK-logic
1
@ SK-logic Je préfère voir les choses différemment. Des langages comme Haskell et C # permettent de lier des fonctions à des noms dans une construction let (rec) ou sous la forme de "super-combinateurs" (c'est-à-dire des liaisons de fonctions de haut niveau), et je vois cela comme une grave différence que je fais pense pas qu'il est juste d'appliquer ici la terminologie lambda d'origine. Parce que rien de tel n'est possible en LC (c'est précisément pourquoi vous avez besoin d'un combinateur Y pour la récursivité). Le résultat de ((\ xy -> x) a) et (const a) dans Haskell est le même et les deux sont des applications, mais je n'utiliserais que le premier terme comme "application lambda".
Ingo
3

Fonction anonyme (sans nom) ou objet généralement inséré comme argument d'une autre fonction.

Par conséquent, l'espace de noms est moins pollué.

Blagovest Buyukliev
la source
1

Lambda fait généralement référence à une expression de fonction dans un contexte de programmation fonctionnelle.

Il s'agit d'une expression lambda en python:

lambda x: x + 1

Représente une fonction qui incrémente son paramètre xde 1.

Pablo Santa Cruz
la source