Was ist Lambda-Code?

16

Ich habe in letzter Zeit gehört, dass Leute davon sprechen, dass Code "Lambda" ist. Ich habe noch nie von diesem Satz gehört. Was bedeutet es?

Oliver Moran
quelle
Es tat Mehrmals. Ich habe es sogar ein paar Mal versucht - aber leider ohne Erfolg. Vielleicht hast du mehr Glück? Vielen Dank an alle, die geantwortet haben.
Oliver Moran
10
@Oliver, ein Teil der hier gestellten Frage besteht darin, zu zeigen, was Sie getan haben, um diese Frage zu beantworten, damit die Leute nicht die gleichen Dinge ausprobieren, die Sie getan haben, und nicht weiterkommen. Indem Sie in den Wikipedia- oder Google-Links angeben, wo Sie verwirrt waren, stellen Sie sicher, dass Ihre Frage besser beantwortet wird, da die Antwort im Allgemeinen möglicherweise nicht Ihren Wünschen entspricht, da sie nur auf das verweist, was Sie zuvor nicht erhalten haben. Überlegen Sie einfach, was jemand anderes veröffentlicht, und sehen Sie, was passiert. Sie werden möglicherweise überrascht sein, welche Ergebnisse erzielt werden.
JB King
7
Ich spüre, dass daraus ein Rap gemacht werden könnte - "mein Code so lambda". Aber ich kann es nichts wert rhythmisieren. :-)
Paul Nathan
1
@JB King + JB King - Vielen Dank für Ihre höflichen Kommentare. Was Sie beide sagen, ist im Großen und Ganzen sinnvoll. Abhängig von der Frage ist es jedoch manchmal besser, mit einer kurzen und offenen Frage die Art der Antworten zu ermitteln, die an keiner anderen Stelle gefunden werden. Meine Frage hat genau die Antworten hervorgerufen, nach denen ich gesucht habe. Ich habe es so formuliert, dass es so wäre. Ich hoffe, die folgenden Antworten sind für andere mit der gleichen Frage nützlich. Es ist ironisch, dass ich mit den Antworten zufrieden bin und einige von der Frage enttäuscht sind.
Oliver Moran
2
@Paul Nathan - du bist so lambda Code, dass du offensichtlich nie geplant hast, nach irgendeinem Standard zu arbeiten; Es ist härter als eine Schleifmaschine!
Glenatron

Antworten:

20

Lambda-Ausdrücke sind entweder eine Abstraktion (manchmal als anonyme Funktion bezeichnet), eine Anwendung oder eine Variable (die meisten Sprachen fügen dieser Liste auch Konstanten hinzu). Lambda-Terme sind nicht notwendigerweise Funktionen und werden nicht notwendigerweise als Parameter übergeben, obwohl dies eine übliche Praxis ist.

Ein häufiges Beispiel für Lambda-Ausdrücke in C #

Beispielsweise:

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

wird ausgeben: 2

In diesem Code übergebe ich eine Lambda-Konstruktion an die FindAllFunktion des .NET- ListObjekts.

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

Das Lambda in diesem Aufruf führt eine einfache Gleichung aus und gibt einen Booleschen Wert zurück, der angibt, FindAllwas zu tun ist.

Timothy Groote
quelle
2
Das stimmt nicht ganz. Lambda-Ausdruck ist entweder eine Abstraktion (nicht unbedingt klein ), eine Anwendung oder eine Variable (die meisten Sprachen fügen dieser Liste auch Konstanten hinzu). Lambda-Terme sind nicht unbedingt Funktionen und werden nicht unbedingt als Parameter übergeben.
SK-logic
Sie haben Recht, ich werde die Antwort aus Gründen der Klarheit korrigieren.
Timothy Groote
3
Geben Sie mir bitte ein Beispiel für einen Lambda-Ausdruck, der keine Funktion ist.
Ingo
1
@Ingo, das ist natürlich eine Terminologie der Lambda-Rechnung. en.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SK-logic
1
@Sk-logic Ich sehe es lieber anders. Sprachen wie Haskell und C # ermöglichen das Binden von Funktionen an Namen in einem let (rec) -Konstrukt oder in Form von "Superkombinatoren" (dh Funktionsbindungen auf oberster Ebene), und dies sehe ich als solch einen gravierenden Unterschied an, den ich tue Ich halte es nicht für richtig, hier die ursprüngliche Lambda-Terminologie anzuwenden. Weil so etwas in LC nicht möglich ist (genau deshalb benötigen Sie einen Y-Kombinator für die Rekursion). Das Ergebnis von ((\ xy -> x) a) und (const a) in Haskell ist dasselbe und beide sind Anwendungen, aber ich würde nur den ersten Ausdruck als "Lambda-Anwendung" verwenden.
Ingo
3

Anonyme (unbenannte) Funktion oder ein Objekt, das normalerweise als Argument für eine andere Funktion eingefügt wird.

Daher ist der Namespace weniger verschmutzt.

Blagovest Buyukliev
quelle
1

Lambda bezieht sich normalerweise auf einen Funktionsausdruck in einem funktionalen Programmierkontext.

Dies ist ein Lambda-Ausdruck in Python:

lambda x: x + 1

Stellt eine Funktion dar, die ihren Parameter xum 1 erhöht .

Pablo Santa Cruz
quelle