2008-09-29 27 views
89

क्या कोई लम्बाडा क्या है इसका एक अच्छा विवरण प्रदान कर सकता है? हमारे पास उनके लिए एक टैग है और वे सी # प्रश्न के रहस्यों पर हैं, लेकिन मुझे अभी तक एक अच्छी परिभाषा और स्पष्टीकरण नहीं मिला है कि वे पहले स्थान पर हैं।लैम्ब्डा क्या है?

+0

कैसे के बारे में [विकिपीडिया के लैम्ब्डा पथरी लेख] (http://en.wikipedia.org/wiki/Lambda_calculus) एक शुरू करने के लिए? फिर [विकिपीडिया के कार्यात्मक प्रोग्रामिंग आलेख] (http://en.wikipedia.org/wiki/Functional_programming_language) एक फॉलोअप के रूप में। – Thorsten79

+1

संभव डुप्लिकेट [लैम्ब्डा (फ़ंक्शन) क्या है?] (Http://stackoverflow.com/questions/16501/what-is-a-lambda- कार्यक्षमता) – nawfal

+0

amda अभिव्यक्ति समझाया गया [यहां] (https: // chaseyourjava .blogspot.in/2017/11/lamda-expression-in-java-8.html) खूबसूरती से। –

उत्तर

123

क्लोजर, लैम्बडा और अज्ञात फ़ंक्शन जरूरी नहीं हैं।

एक अनाम फ़ंक्शन कोई ऐसा फ़ंक्शन है जिसमें अपने नाम (या, कम से कम, आवश्यकता नहीं है) नहीं है।

एक बंद करना एक ऐसा कार्य है जो घोषित होने पर चरम सीमा तक पहुंच सकता है, भले ही गुंजाइश से गिर गया हो। बेनामी कार्यों को बंद होने की आवश्यकता नहीं है, लेकिन वे अधिकतर भाषाओं में हैं और जब वे नहीं हैं तो कम उपयोगी हो जाते हैं।

एक लैम्ब्डा .. कंप्यूटर विज्ञान के रूप में काफी अच्छी तरह परिभाषित नहीं है। बहुत सी भाषाएं शब्द का भी उपयोग नहीं करती हैं; इसके बजाय वे उन्हें केवल बंद या एनन कार्यों को बुलाएंगे या अपनी शब्दावली का आविष्कार करेंगे। एलआईएसपी में, एक लैम्ब्डा सिर्फ एक अज्ञात कार्य है। पायथन में, एक लैम्ब्डा एक अज्ञात फ़ंक्शन है जो विशेष रूप से एक अभिव्यक्ति तक ही सीमित होता है; कुछ और, और आपको एक नामित फ़ंक्शन की आवश्यकता है। लैम्ब्डास दोनों भाषाओं में बंद हैं।

+0

शब्द का उद्देश्य लैम्ब्डा कैलकुस को इंगित करना है http://en.wikipedia.org/wiki/Lambda_calculus –

+0

वाह मैं इस प्रश्न को देने के लिए एक से अधिक उपरोक्त था। मैंने शब्दावली में इतने सारे तकनीकी उत्तरों को झुका दिया है, लेकिन यह संक्षिप्त है और तुरंत बिंदु बनाता है। –

+8

+1 बंद करने को परिभाषित करने के लिए "क्लोज ओवर" शब्द का उपयोग न करने के लिए +1 जैसा कि यह किसी भी स्पष्ट बनाता है। – Daniel

1

विकिपीडिया से संक्षेपि्त: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word

ऐसे लिस्प और अजगर के रूप में प्रोग्रामिंग भाषाओं में, लैम्ब्डा अनाम प्रक्रियाएं या बंद किया जाना, लैम्ब्डा पथरी उपयोग निम्नलिखित निरूपित किया जाता एक ऑपरेटर है।

+0

मुझे लगता है कि आप इस लाइन का मतलब है: लिस्प और पायथन जैसे प्रोग्रामिंग भाषाओं में, लैम्ब्डा लैम्ब्डा कैलकुस उपयोग के बाद अज्ञात कार्यों या बंदियों को इंगित करने के लिए प्रयुक्त होता है। मैं पहले ही लेख स्कैन कर चुका हूं लेकिन उसे याद किया। – Fred

8

यह सिर्फ एक गुमनाम समारोह इनलाइन घोषित है, सबसे आम तौर पर एक प्रतिनिधि को सौंपा है जब आप एक पूर्ण समारोह लिखने के लिए नहीं करना चाहती।

लिस्प/स्कीम जैसी भाषाओं में, उन्हें अक्सर फ़ंक्शन पैरामीटर के रूप में काफी उदारता से पारित किया जाता है, लेकिन सी # में मुहावरे आमतौर पर लैम्ब्स का उपयोग केवल कार्यों के आलसी मूल्यांकन के लिए किया जाता है, जैसे कि लिनक में, या ईवेंट-हैंडलिंग कोड बनाने के लिए थोड़ा सा terser।

17

"लैम्ब्डा" Lambda Calculus करने के लिए या एक विशिष्ट लैम्ब्डा अभिव्यक्ति को दर्शाता है। लैम्ब्डा कैलकुस मूल रूप से तर्क और गणित की एक शाखा है जो कार्यों से संबंधित है, और functional programming languages का आधार है।

~ विलियम रिले भूमि

19

भी कहा जाता है बंद या अनाम कार्यों .. मैं सबसे अच्छा वर्णन here पाया। असल में, कोड के इनलाइन ब्लॉक जिसे किसी फ़ंक्शन के लिए तर्क के रूप में पारित किया जा सकता है।

4

प्रोग्रामिंग में 'लैम्ब्डा' जैसी वास्तव में ऐसी कोई चीज़ नहीं है। यह भाषा पर निर्भर करता है, आदि

संक्षेप में, आम तौर पर 'लैम्बदास' वाली भाषा में अज्ञात कार्यों के लिए शब्द का उपयोग किया जाता है, या कुछ मामलों में, बंद हो जाता है। इस तरह, रूबी में:

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

पिछले उत्तरों के जवाब में:
- अज्ञात कार्यों के बारे में महत्वपूर्ण बात यह नहीं है कि उन्हें एक नाम की आवश्यकता नहीं है।
-Closures एक अलग अवधारणा है।
-एक विशाल विकिपीडिया लेख यह किसी भी स्पष्ट नहीं कर रहा है।

मेरा उत्तर 3 भागों में है:
1।एक लैम्ब्डा एक ऐसा कार्य है जो एक अभिव्यक्ति भी है। यह महत्वपूर्ण बात है।
2. कई भाषाओं को तथाकथित "लैम्बडास" लागू करने के लिए कुछ सिंटैक्टिक चीनी जोड़ें, इन छोटे कार्यों को आसान और तेज़ लिखने के लिए, लेकिन इसकी आवश्यकता नहीं है।
3. कुछ भाषाओं की आवश्यकता हो सकती है कि लैम्ब्डा में कोई दुष्प्रभाव नहीं है। यह कार्यात्मक अर्थ में एक और शुद्ध लैम्ब्डा होगा।

जब कोई फ़ंक्शन अभिव्यक्ति होता है, तो यह भाषा के भीतर "प्रथम श्रेणी का नागरिक" होता है। मैं इसके साथ सभी महत्वपूर्ण कर सकते हैं:

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 
संबंधित मुद्दे