Frage

Könnte jemand eine gute Beschreibung von dem, was ein Lambda ist? Wir haben einen Tag für sie und sie sind auf den Geheimnissen der C # Frage, aber ich habe noch eine gute Definition und Erklärung zu finden, was sie in erster Linie ist.

War es hilfreich?

Lösung

Verschlüsse, Lambda-Ausdrücke und anonyme Funktionen sind nicht unbedingt die gleiche Sache.

Eine anonyme Funktion ist jede Funktion, die nicht hat (oder zumindest muß) seinen eigenen Namen.

Eine Schließung ist eine Funktion, die Variablen, die waren in ihrem lexikalischen Gültigkeitsbereich zugreifen kann, wenn sie erklärt wurde, auch nachdem sie aus Gültigkeitsbereich gefallen ist. Anonyme Funktionen müssen nicht unbedingt Verschlüsse sein, aber sie sind in den meisten Sprachen und werden eher weniger nützlich, wenn sie nicht sind.

Ein Lambda ist .. nicht ganz so gut, so weit wie Informatik geht definiert. Viele Sprachen nicht einmal den Begriff; stattdessen werden sie nur sie Schließungen oder anon Funktionen aufrufen oder ihre eigene Terminologie erfinden. In LISP ist eine Lambda nur eine anonyme Funktion. In Python, ist eine Lambda eine anonyme Funktion spezifisch an einen einzelnen Ausdruck beschränkt; etwas mehr, und Sie müssen eine benannte Funktion. Lambda-Ausdrücke sind Verschlüsse in beiden Sprachen.

Andere Tipps

Auch Schließungen oder anonyme Funktionen genannt .. Ich fand die beste Beschreibung rel="noreferrer">. Grundsätzlich inline Codeblock, der als Argument eine Funktion übergeben werden.

"Lambda" bezieht sich auf die Lambda-Kalküls oder zu einem bestimmten Lambda-Ausdruck. Lambda-Kalkül ist im Grunde ein Zweig der Logik und Mathematik, die mit Funktionen beschäftigt, und ist die Grundlage der funktionaler Programmiersprachen .

~ William Riley-Land

Es ist nur eine anonyme Funktion inline deklariert, am typischsten zu einem Delegierten zugewiesen, wenn Sie nicht wollen, eine vollwertige Funktion schreiben.

In Sprachen wie Lisp / Schema, sie sind oft recht großzügig als Funktionsparameter übergeben um, aber das Idiom in C # findet typischerweise lambda nur für faule Auswertung von Funktionen verwendet, wie in Linq, oder für die Herstellung von Ereignisbehandlungscode eines Bit knappere.

Es ist nicht wirklich so etwas wie ‚eine Lambda‘ in der Programmierung. Es hängt von der Sprache, etc.

Kurz gesagt, normalerweise eine Sprache, die ‚hat lambda‘ verwendet den Begriff für anonyme Funktionen oder, in einigen Fällen, Verschlüsse. Wie so, in Ruby:

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

Als Reaktion auf die bisherigen Antworten:
-Die wichtige Sache, über anonyme Funktionen ist nicht, dass sie einen Namen erfordert nicht.
-Closures ist ein eigenes Konzept.
-A gigantische Wikipedia-Artikel ist dieses noch klarer nicht zu machen.

Hier ist meine Antwort in 3 Teilen:
1. Eine Lambda ist eine Funktion, welche auch ein Ausdruck ist. Das ist das Wichtigste.
2. Viele Sprachen, die so genannte „lambdas“ fügen Sie einige implementieren syntaktischer Zucker , um diese kurzen Funktionen einfacher und schneller zu schreiben, aber dies ist nicht erforderlich.
3. Einige Sprachen können verlangen, dass eine Lambda hat keine Nebenwirkungen . Das wäre ein reines Lambda im funktionellen Sinne sein.

Wenn eine Funktion ein Ausdruck ist, ist es ein „First-Class-Objekt“ in der Sprache. Ich kann alles tun, um die wichtigen Dinge mit ihm:

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

Abgeschnittene von wikipedia: http://en.wikipedia.org/wiki/Lambda # Lambda.2C_the_word

In Programmiersprachen wie Lisp und Python, Lambda ist ein Operator verwendete anonyme Funktionen oder Schließungen zu bezeichnen, folgende Lambda-Kalkül Nutzung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top