Co To jest Lambda?

Mógłby ktoś podać dobry opis czym jest Lambda? Mamy dla nich znacznik i są na sekrety C# pytanie, ale nie mam jeszcze znaleźć dobrą definicję i Wyjaśnienie, czym one są w pierwszej kolejności.

Author: hippietrail, 2008-09-29

7 answers

Zamknięcia, lambda i funkcje anonimowe niekoniecznie są tym samym.

Funkcja anonimowa to każda funkcja, która nie ma (lub przynajmniej nie potrzebuje) własnej nazwy.

Zamknięcie jest funkcją, która może uzyskać dostęp do zmiennych, które znajdowały się w jej leksykalnym zakresie, gdy została zadeklarowana, nawet po tym, jak spadły z zakresu. Funkcje anonimowe niekoniecznie muszą być zamknięte, ale są w większości języków i stają się raczej mniej przydatne, gdy nie są.

Lambda jest.. nie tak dobrze zdefiniowana, jeśli chodzi o informatykę. Wiele języków nawet nie używa tego terminu; zamiast tego po prostu będą je nazywać zamknięciami lub funkcjami Anonymous lub wymyślą własną terminologię. W Lispie lambda jest tylko funkcją anonimową. W Pythonie lambda jest funkcją anonimową, ograniczoną do pojedynczego wyrażenia. Lambda są zamknięciami w obu językach.

 128
Author: Eevee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 19:12:54

Nazywane również zamknięciami lub funkcjami anonimowymi.. Znalazłem najlepszy opis tutaj. Zasadniczo, Wbudowany blok kodu, który może być przekazany jako argument do funkcji.

 19
Author: Gulzar Nazim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 19:09:49

"Lambda" odnosi się do rachunku Lambda lub do określonego wyrażenia lambda. Rachunek Lambda jest zasadniczo gałęzią logiki i matematyki, która zajmuje się funkcjami i jest podstawą języków programowania funkcyjnego .

~ William Riley-Land

 17
Author: wprl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-10 20:05:37

Jest to po prostu anonimowa funkcja zadeklarowana w linii, najczęściej przypisana do delegata, gdy nie chcesz pisać pełnowartościowej funkcji.

W językach takich jak lisp / scheme, często są one przekazywane dość swobodnie jako parametry funkcji, ale idiom w C# zazwyczaj znajduje lambda używane tylko do leniwej oceny funkcji, jak w linq, lub do tworzenia kodu obsługi zdarzeń bit terser.

 8
Author: JasonTrue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 19:04:51

Nie ma czegoś takiego jak lambda w programowaniu. To zależy od języka itp.

W skrócie, Zwykle język, który "ma lambda" używa terminu dla funkcji anonimowych lub, w niektórych przypadkach, zamknięć. Tak jak w Ruby:

f = lambda { return "this is a function with no name" }
puts f.call
 5
Author: rfunduk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 19:04:17

W odpowiedzi na poprzednie odpowiedzi:
- Ważną rzeczą w funkcjach anonimowych nie jest to, że nie wymagają one nazwy.
- Zamknięcia to osobna koncepcja.
- Gigantyczny artykuł na Wikipedii nie czyni tego jaśniejszym.

Oto moja odpowiedź w 3 częściach:
1. Lambda jest funkcją, która jest również wyrażeniem. To jest ważne.
2. Wiele języków implementujących tzw. "lambdy" dodaje trochę cukru składniowego , aby uczynić pisanie tych krótkich funkcje łatwiejsze i szybsze, ale nie jest to wymagane.
3. Niektóre języki mogą wymagać, aby lambda nie powodowała żadnych skutków ubocznych . To byłaby bardziej czysta lambda w sensie funkcjonalnym.

Gdy funkcja jest wyrażeniem, jest "obywatelem pierwszej klasy" w języku. Mogę z nim robić wszystkie ważne rzeczy:

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
 3
Author: cmeub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-17 07:42:19

Wycięte z Wikipedii: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word

W językach programowania takich jak Lisp i Python, lambda jest operatorem używanym do oznaczania anonimowych funkcji lub zamknięć, po użyciu rachunku lambda.

 1
Author: Mesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 18:59:09