Domanda

Qualcuno potrebbe fornire una buona descrizione di cosa sia una Lambda? Abbiamo un tag per loro e sono sui segreti della domanda C #, ma devo ancora trovare una buona definizione e una spiegazione di ciò che sono in primo luogo.

È stato utile?

Soluzione

Chiusure, lambda e funzioni anonime non sono necessariamente la stessa cosa.

Una funzione anonima è qualsiasi funzione che non ha (o almeno necessita) il proprio nome.

Una chiusura è una funzione che può accedere alle variabili che erano nel suo ambito lessicale quando è stata dichiarata, anche dopo che sono cadute fuori dall'ambito. Le funzioni anonime non devono necessariamente essere chiusure, ma sono nella maggior parte delle lingue e diventano piuttosto 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 li chiameranno semplicemente chiusure o altre funzioni o inventeranno la propria terminologia. In LISP, una lambda è solo una funzione anonima. In Python, una lambda è una funzione anonima specificamente limitata a una singola espressione; qualcosa di più e hai bisogno di una funzione denominata. Le lambda sono chiusure in entrambe le lingue.

Altri suggerimenti

Chiamate anche chiusure o funzioni anonime. Ho trovato la migliore descrizione qui . Fondamentalmente, blocco di codice incorporato che può essere passato come argomento a una funzione.

" Lambda " fa riferimento al Lambda Calculus o a un'espressione lambda specifica. Il calcolo lambda è fondamentalmente un ramo della logica e della matematica che si occupa delle funzioni ed è la base di linguaggi di programmazione funzionale .

~ William Riley-Land

È solo una funzione anonima dichiarata in linea, in genere assegnata a un delegato quando non si desidera scrivere una funzione a tutti gli effetti.

In linguaggi come lisp / schema, vengono spesso scambiati abbastanza liberamente come parametri di funzione, ma il linguaggio in C # in genere trova lambda usati solo per la valutazione pigra delle funzioni, come in linq, o per rendere un codice di gestione degli eventi un bit terser.

Non c'è davvero nulla come "un lambda" nella programmazione. Dipende dalla lingua, ecc.

In breve, normalmente una lingua 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. Una lambda è una funzione che è anche un'espressione. Questa è la cosa importante.
2. Molte lingue che implementano il cosiddetto "lambdas" aggiungi un po 'di zucchero sintattico per rendere più facile e veloce la scrittura di queste brevi funzioni, ma non è necessario.
3. Alcune lingue potrebbero 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" nella 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

In linguaggi di programmazione come Lisp e Python, lambda è un operatore utilizzato per indicare funzioni o chiusure anonime, in seguito all'utilizzo del calcolo lambda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top