Che cos'è il codice "lambda"?


16

Di recente ho sentito persone parlare del codice come "lambda". Non ho mai sentito parlare di questa frase prima. Cosa significa?


Lo ha fatto. Parecchie volte. L'ho provato anche un paio di volte, ma purtroppo senza successo. Forse avrai più fortuna? Grazie a coloro che hanno risposto.
Oliver Moran,

10
@Oliver, parte del porre una domanda qui è anche mostrare cosa hai fatto per rispondere a quella domanda in modo che le persone non stiano provando le stesse cose che hai fatto e rimangano bloccate. Specificando dove nei link di Wikipedia o Google hai scoperto di essere confuso, questo garantisce una migliore risposta alla tua domanda poiché a livello generale la risposta potrebbe non essere quella che volevi poiché si riferisce solo a ciò che non hai ricevuto in precedenza. Prendi in considerazione l'idea di provare ciò che qualcun altro sta pubblicando e vedere cosa succede. Potresti essere sorpreso di quali risultati.
JB King,

7
Sento che un rap potrebbe essere creato da questo - "il mio codice così lambda". Ma non posso ritmare che valga la pena. :-)
Paul Nathan,

1
@JB King + JB King - Grazie per i tuoi cortesi commenti. In termini generali, ciò che entrambi dite è sensato. Tuttavia, a seconda della query, a volte una domanda breve e aperta è migliore per suscitare il tipo di risposte che non si trovano altrove. La mia domanda ha suscitato proprio il tipo di risposte che stavo cercando. L'ho espresso in modo che lo facesse. Spero che le risposte che seguono siano utili agli altri con la stessa domanda. È ironico che sono soddisfatto delle risposte mentre alcuni sono delusi dalla domanda.
Oliver Moran,

2
@Paul Nathan - sei un codice così chiaro che chiaramente non hai mai pianificato un lavoro secondo uno standard; è più ruvido di una levigatrice!
glenatron,

Risposte:


20

Le espressioni lambda sono o un'astrazione (a volte definita funzione anonima), un'applicazione o una variabile (la maggior parte delle lingue aggiunge anche costanti a questo elenco). I termini lambda non sono necessariamente funzioni e non sono necessariamente passati come parametri, sebbene questa sia una pratica comune.

Un esempio comune di espressioni lambda in C #

Per esempio:

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

produrrà: 2

In questo codice, passo una costruzione lambda alla FindAllfunzione Listdell'oggetto .NET .

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

La lambda in questa chiamata esegue una semplice equazione e restituisce un valore booleano, che dice FindAllcosa fare.


2
Non è del tutto vero. L'espressione lambda è un'astrazione (non necessariamente piccola ), un'applicazione o una variabile (la maggior parte delle lingue aggiunge anche costanti a questo elenco). I termini lambda non sono necessariamente funzioni e non sono necessariamente passati come parametri.
SK-logic,

Hai ragione, darò la risposta per motivi di chiarezza.
Timothy Groote,

3
Fammi un esempio di un'espressione lambda che non è una funzione, per favore.
Ingo,

1
@Ingo, questa è una terminologia del calcolo lambda, ovviamente. en.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SK-logic

1
@ SK-logic Preferisco vederlo diversamente. Linguaggi come Haskell e C # rendono possibile associare funzioni a nomi in un costrutto let (rec) o sotto forma di "super-combinatori" (cioè collegamenti di funzioni di livello superiore), e questo vedo come una differenza così grave che faccio non credo sia giusto applicare qui la terminologia lambda originale. Perché nulla di simile è possibile in LC (questo è esattamente il motivo per cui è necessario un combinatore Y per la ricorsione). Il risultato di ((\ xy -> x) a) e (const a) in Haskell è lo stesso ed entrambi sono applicazioni, ma vorrei solo il primo termine come "applicazione lambda".
Ingo,

3

Funzione anonima (senza nome) o un oggetto che di solito è sottolineato come argomento di un'altra funzione.

Quindi, lo spazio dei nomi è meno inquinato.


1

Lambda di solito si riferisce a un'espressione di funzione in un contesto di programmazione funzionale.

Questa è un'espressione lambda in Python:

lambda x: x + 1

Rappresenta una funzione che incrementa il suo parametro xdi 1.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.