“Lambda” kodu nedir?


17

Geçenlerde insanların kod "lambda" olmak hakkında konuştuklarını duydum. Bu ifadeyi daha önce hiç duymamıştım. Bu ne demek?


O yaptı. Birkaç defa. Hatta birkaç kez denedim - ama ne yazık ki başarılı olamadı. Belki daha fazla şansın olur? Yanıt verenlere teşekkürler.
Oliver Moran

10
@Oliver, burada bir soru sormanın bir parçası da, bu soruyu cevaplamak için ne yaptığınızı göstermektir, böylece insanlar yaptığınız şeyleri denememek ve sıkışmak. Vikipedi veya Google bağlantılarında nerede kafanızın karıştığını belirterek, sorunuzun genel düzeyde daha iyi yanıtlanmasını sağlar, çünkü daha önce almadığınız şeylere atıfta bulunduğundan, yanıt istediğiniz şey olmayabilir. Başka birinin ne gönderdiğini denemeyi düşünün ve ne olduğunu görün. Hangi sonuçlara şaşırabilirsiniz.
JB King

7
Bunun dışında bir rap yapılabilir - "kodum bu kadar lambda". Ama buna değer bir şey yapamam. :-)
Paul Nathan

1
@JB King + JB King - Nazik yorumlarınız için teşekkür ederiz. Geniş anlamda, ikinizin de söyledikleri mantıklı. Bununla birlikte, sorguya bağlı olarak, bazen başka bir yerde bulunmayan cevap türlerini ortaya çıkarmak için kısa ve açık bir soru daha iyidir. Sorum tam olarak aradığım cevapları ortaya çıkardı. Öyle ifade ettim. Umarım aşağıdaki cevaplar aynı soruya sahip olanlar için faydalıdır. Bazılarının sorudan hayal kırıklığına uğramasıyla aynı zamanda cevaplardan memnun kaldığım ironik.
Oliver Moran

2
@ Paul Nathan - kodladınız öyle ki hiç bir standart için çalışmayı planladığınız lambda; bir zımparadan daha kaba!
glenatron

Yanıtlar:


20

Lambda ifadeleri bir soyutlamadır (bazen anonim işlev olarak da adlandırılır), bir uygulama veya bir değişkendir (çoğu dil de bu listeye sabitler ekler). Lambda terimleri mutlaka işlev görmez ve mutlaka parametre olarak iletilmez, ancak bu yaygın bir uygulamadır.

C # 'da lambda ifadelerinin yaygın bir örneği

Örneğin:

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

Çıktı: 2

Bu kodda, bir lambda yapısını FindAll.NET Listnesnesinin işlevine geçiriyorum.

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

Bu çağrıdaki lambda basit bir denklem yürütür ve FindAllne yapılacağını söyleyen bir boole döndürür .


2
Bu tam olarak doğru değil. Lambda ifadesi ya bir soyutlama ( küçük olması gerekmez ), bir uygulama ya da bir değişkendir (çoğu dil de bu listeye sabitler ekler). Lambda terimleri mutlaka işlev görmez ve mutlaka parametre olarak iletilmez.
SK-logic

Haklısın, netlik uğruna cevabı değiştireceğim.
Timothy Groote

3
Bana bir işlev olmayan bir lambda ifadesi örneği verin, lütfen.
Ingo

1
@Ingo, bu elbette bir lambda hesabı terminolojisi. en.wikipedia.org/wiki/Lambda_calculus#Lambda_terms
SK-logic

1
@ SK-logic Farklı görmeyi tercih ederim. Haskell ve C # gibi diller, işlevlere bir izin (rec) yapısında veya "süper birleştiriciler" (yani üst düzey işlev bağlamaları) biçiminde adlara bağlanmayı mümkün kılar ve bunu yaptığım gibi büyük bir fark olarak görüyorum Burada orijinal lambda terminolojisini uygulamanın doğru olduğunu düşünmüyorum. Çünkü LC'de böyle bir şey mümkün değildir (tam olarak neden özyineleme için Y birleştiricisine ihtiyacınız vardır). Haskell'deki ((\ xy -> x) a) ve (const a) sonuçları aynıdır ve her ikisi de uygulamalardır, ancak “lambda uygulaması” olarak yalnızca ilk terim olur.
Ingo

3

Anonim (adsız) işlev veya genellikle başka bir işleve argüman olarak satır içine alınmış bir nesne.

Bu nedenle, ad alanı daha az kirlidir.


1

Lambda genellikle fonksiyonel bir programlama bağlamında bir fonksiyon ifadesini ifade eder.

Bu, pitondaki bir lambda ifadesidir:

lambda x: x + 1

Parametresini x1 artıran bir işlevi temsil eder .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.