Pergunta

Alguém poderia fornecer uma boa descrição do que um Lambda é? Temos uma tag para eles e eles estão sobre os segredos de C pergunta #, mas eu ainda tenho que encontrar uma definição boa e explicação do que eles estão em primeiro lugar.

Foi útil?

Solução

Closures, lambdas e funções anônimas não são necessariamente a mesma coisa.

Uma função anônima é qualquer função que não tem (ou, pelo menos, necessidade) o seu próprio nome.

Um fechamento é uma função que as variáveis ??de acesso pode que estavam em seu escopo lexical quando foi declarada, mesmo depois de terem caído a do escopo. funções anônimas não têm necessariamente de ser encerramentos, mas eles são na maioria das linguagens e tornar-se um pouco menos útil quando eles não são.

A lambda é .. não tão bem definida, tanto quanto a ciência da computação vai. Um monte de idiomas nem sequer usar o termo; em vez disso, só vai chamá-los de encerramentos ou funções Anon ou inventar a sua própria terminologia. Em LISP, um lambda é apenas uma função anônima. Em Python, um lambda é uma função anónima especificamente limitado a uma única expressão; mais nada, e você precisa de uma função chamada. Lambdas são fechamentos em ambas as línguas.

Outras dicas

Também chamado de encerramentos ou funções anônimas .. Eu encontrei a melhor descrição aqui . Basicamente, bloco de linha de código que pode ser passado como um argumento para uma função.

"Lambda" refere-se ao Lambda Calculus ou para uma expressão específica lambda. Lambda cálculo é basicamente um ramo da lógica e da matemática que lida com funções, e é a base da linguagens funcionais de programação .

~ William Riley-Land

É apenas uma função anônima declarada em linha, mais tipicamente atribuído a um delegado quando você não quer escrever uma função de pleno direito.

Em linguagens como Lisp / esquema, eles são muitas vezes passadas ao redor bastante liberalmente como parâmetros de função, mas a linguagem em C # normalmente encontra lambdas usados ??apenas para avaliação preguiçosa de funções, como em LINQ, ou para fabricar de manipulação de eventos código de um bit terser.

Não há realmente tal coisa a como 'um lambda' na programação. Depende da linguagem, etc.

Em suma, normalmente uma linguagem que 'tem lambdas' usa o termo para funções anônimas ou, em alguns casos, encerramentos. Como assim, em Ruby:

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

Em resposta às respostas anteriores:
-A coisa importante sobre funções anônimas não é que eles não exigem um nome.
-Closures são um conceito separado.
-A gigantesca wikipedia artigo não está fazendo isso mais claro.

Aqui está a minha resposta em 3 partes:
1. Um lambda é uma função que também é uma expressão. Esta é a coisa importante.
2. Muitas línguas que implementam as chamadas "lambdas" adicionar um pouco de açúcar sintático para tornar a escrita destas funções curtas mais fácil e mais rápido, mas isso não é necessário.
3. Algumas línguas podem exigir que um lambda tem sem efeitos colaterais . Isso seria um lambda mais pura, no sentido funcional.

Quando uma função é uma expressão, é um "cidadão de primeira classe" dentro da linguagem. Posso todas as coisas importantes com ela:

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

recortado de wikipedia: http://en.wikipedia.org/wiki/Lambda # Lambda.2C_the_word

Em linguagens como Lisp e Python programação, lambda é um operador usado para denotar funções ou encerramento anônimos, seguindo o uso de lambda calculus.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top