O que é o código "lambda"?

16

Recentemente, ouvi pessoas falarem sobre o código ser "lambda". Eu nunca ouvi falar dessa frase antes. O que isso significa?

Oliver Moran
fonte
Sim. Várias vezes. Até tentei algumas vezes - mas infelizmente sem sucesso. Talvez você tenha mais sorte? Obrigado a todos que responderam.
Oliver Moran
10
@ Oliver, parte de fazer uma pergunta aqui é também mostrar o que você fez para responder a essa pergunta, para que as pessoas não tentem as mesmas coisas que você e que fiquem presas. Ao especificar onde, nos links da Wikipedia ou do Google, você achou que estava confuso, isso garante que sua pergunta seja melhor respondida, pois, em geral, a resposta pode não ser o que você queria, pois está apenas referenciando o que não recebeu anteriormente. Apenas considere tentar o que outra pessoa está postando e veja o que acontece. Você pode se surpreender com o resultado.
JB rei
7
Eu sinto que um rap poderia ser feito com isso - "meu código é tão lambda". Mas não consigo ritmo que valha a pena. :-)
Paul Nathan
1
@JB King + JB King - Obrigado por seus comentários corteses. Em termos gerais, o que vocês dois dizem é sensato. No entanto, dependendo da consulta, algumas vezes uma pergunta breve e aberta é melhor para obter os tipos de respostas que não são encontradas em outros lugares. Minha pergunta suscitou precisamente o tipo de resposta que eu estava procurando. Eu expressei para que fosse. Espero que as respostas abaixo sejam úteis para outras pessoas com a mesma pergunta. É irônico que eu esteja satisfeito com as respostas ao mesmo tempo em que alguns estão decepcionados com a pergunta.
Oliver Moran
2
@ Paul Nathan - você é um código tão lambda que claramente nunca planejou trabalhar com nenhum padrão; é mais áspero que uma lixadeira!
glenatron

Respostas:

20

As expressões lambda são uma abstração (às vezes chamada de função anônima), um aplicativo ou uma variável (a maioria dos idiomas também adiciona constantes a esta lista). Os termos do Lambda não são necessariamente funções e não são passados ​​necessariamente como parâmetros, embora essa seja uma prática comum.

Um exemplo comum de expressões lambda em C #

Por exemplo:

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);

irá produzir: 2

Nesse código, passo uma construção lambda para o FindAll função do Listobjeto .NET .

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

O lambda nesta chamada executa uma equação simples e retorna um booleano, dizendo FindAllo que fazer.

Timothy Groote
fonte
2
Isso não é bem verdade. A expressão lambda é uma abstração (não necessariamente pequena ), um aplicativo ou uma variável (a maioria dos idiomas também adiciona constantes a esta lista). Os termos do Lambda não são necessariamente funções e não são passados ​​necessariamente como parâmetros.
SK-logic
Você está certo, vou alterar a resposta por uma questão de clareza.
Timóteo Groote
3
Dê-me um exemplo de uma expressão lambda que não é uma função, por favor.
Ingo
1
@ Ingo, é claro que é uma terminologia do cálculo lambda. en.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SK-logic
1
@ SK-logic Eu prefiro vê-lo de forma diferente. Linguagens como Haskell e C # tornam possível vincular funções a nomes em uma construção let (rec) ou na forma de "superconjugadores" (ou seja, associações de funções de nível superior), e isso eu vejo como uma grande diferença que eu faço acha que não é correto aplicar aqui a terminologia lambda original. Como isso não é possível no LC (é exatamente por isso que você precisa de um combinador Y para recursão). O resultado de ((\ xy -> x) a) e (const a) em Haskell é o mesmo e ambos são aplicativos, mas eu usaria apenas o primeiro termo como "aplicativo lambda".
Ingo
3

Função anônima (sem nome) ou um objeto que geralmente é embutido como argumento para outra função.

Portanto, o espaço para nome é menos poluído.

Blagovest Buyukliev
fonte
1

O Lambda geralmente se refere a uma expressão de função em um contexto de programação funcional.

Esta é uma expressão lambda em python:

lambda x: x + 1

Representa uma função que incrementa seu parâmetro xem 1.

Pablo Santa Cruz
fonte