एक लैम्ब्डा क्या है?


93

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



2
के संभावित डुप्लिकेट क्या एक लैम्ब्डा (समारोह) है?
नवफाल

अमदा अभिव्यक्ति ने यहां खूबसूरती से समझाया ।
जमीर मूलानी

जवाबों:


135

क्लोज़र, लैम्ब्डा और अनाम फ़ंक्शन आवश्यक रूप से एक ही चीज़ नहीं हैं।

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

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

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


इस शब्द का आशय लैंबडा कैलकुलस en.wikipedia.org/wiki/Lambda_calculus
स्टीवन ए लोव

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

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

5
एक ऐसा क्षेत्र जहां कुछ चर मौजूद हो सकते हैं (यानी, एक गुंजाइश) आपके कोड की संरचना (यानी, शाब्दिक रूप से)। उदाहरण के लिए, अधिकांश भाषाओं में, एक फ़ंक्शन एक शाब्दिक गुंजाइश को परिभाषित करता है; फ़ंक्शन के अंदर घोषित कोई भी चर इसके बाहर दुर्गम है।
ईवे

19

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


17

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

~ विलियम रिले-लैंड


8

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

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


5

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

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

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

4

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

यहां मेरा जवाब 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

1

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

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


मुझे लगता है कि आप इस लाइन का मतलब है: प्रोग्रामिंग भाषाओं में जैसे लिस्प और पायथन, लैम्ब्डा एक ऑपरेटर है जिसका इस्तेमाल लैम्ब्डा पथरी के उपयोग के बाद अनाम कार्यों या क्लोजर को निरूपित करने के लिए किया जाता है। मैं पहले ही इस लेख को स्कैन कर चुका हूँ लेकिन यह याद नहीं है।
फ्रेड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.