Qualcuno potrebbe fornire una buona descrizione di cosa sia un Lambda? Abbiamo un tag per loro e sono sui segreti della domanda C #, ma devo ancora trovare una buona definizione e spiegazione di cosa sono in primo luogo.
Qualcuno potrebbe fornire una buona descrizione di cosa sia un Lambda? Abbiamo un tag per loro e sono sui segreti della domanda C #, ma devo ancora trovare una buona definizione e spiegazione di cosa sono in primo luogo.
Risposte:
Chiusure, lambda e funzioni anonime non sono necessariamente la stessa cosa.
Una funzione anonima è qualsiasi funzione che non ha (o, almeno, necessita) un proprio nome.
Una chiusura è una funzione che può accedere a variabili che erano nel suo ambito lessicale quando è stata dichiarata, anche dopo che sono uscite dallo scope. Le funzioni anonime non devono necessariamente essere chiusure, ma sono nella maggior parte delle lingue e diventano meno utili quando non lo sono.
Un lambda è .. non così ben definito per quanto riguarda l'informatica. Molte lingue non usano nemmeno il termine; invece le chiameranno semplicemente chiusure o funzioni anon o inventeranno la propria terminologia. In LISP, un lambda è solo una funzione anonima. In Python, un lambda è una funzione anonima specificamente limitata a una singola espressione; qualcosa di più e hai bisogno di una funzione con nome. Le lambda sono chiusure in entrambe le lingue.
Chiamate anche chiusure o funzioni anonime .. Ho trovato la migliore descrizione qui . Fondamentalmente, blocco di codice inline che può essere passato come argomento a una funzione.
"Lambda" si riferisce al Lambda Calculus oa una specifica espressione lambda. Il lambda calcolo è fondamentalmente un ramo della logica e della matematica che si occupa di funzioni ed è la base dei linguaggi di programmazione funzionale .
~ William Riley-Land
È solo una funzione anonima dichiarata inline, in genere assegnata a un delegato quando non si desidera scrivere una funzione a tutti gli effetti.
In linguaggi come lisp / scheme, sono spesso passati in giro abbastanza liberamente come parametri di funzione, ma l'idioma in C # trova tipicamente lambda usati solo per la valutazione pigra delle funzioni, come in linq, o per rendere il codice di gestione degli eventi un po 'più conciso.
Non esiste davvero una cosa come "un lambda" nella programmazione. Dipende dalla lingua, ecc.
In breve, normalmente un linguaggio che "ha lambda" usa il termine per funzioni anonime o, in alcuni casi, chiusure. In questo modo, in Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
In risposta alle risposte precedenti:
-La cosa importante delle funzioni anonime non è che non richiedono un nome.
-Le chiusure sono un concetto separato.
-Un gigantesco articolo di wikipedia non lo rende più chiaro.
Ecco la mia risposta in 3 parti:
1. Un lambda è una funzione che è anche un'espressione. Questa è la cosa importante.
2. Molti linguaggi che implementano i cosiddetti "lambda" aggiungono un po 'di zucchero sintattico per rendere la scrittura di queste brevi funzioni più facile e veloce, ma questo non è richiesto.
3. Alcune lingue possono richiedere che un lambda non abbia effetti collaterali . Sarebbe un lambda più puro in senso funzionale.
Quando una funzione è un'espressione, è un "cittadino di prima classe" all'interno della lingua. Posso fare tutte le cose importanti con esso:
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
Ritagliato da wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
Nei linguaggi di programmazione come Lisp e Python, lambda è un operatore utilizzato per denotare funzioni o chiusure anonime, in seguito all'uso di lambda calcolo.