2011-02-15 15 views
10

मैंने यह प्रश्न नौकरी पोस्टिंग में से एक पर देखा और यह पूछता है कि लैम्ब्डा फ़ंक्शन क्या है और उच्च आदेश फ़ंक्शन के साथ इसका संबंध क्या है। What is a lambda (function)? और इस http://en.wikipedia.org/wiki/Higher-order_functionलैम्ब्डा उच्च प्रकार का कार्य है?

होफ के परिभाषा जो कहते हैं कम से कम एक या एक से अधिक समारोह लेने के लिए या एक समारोह लौटना चाहिए: मैं पहले से ही कैसे काफी विश्वास है यह समझा तो मैं एक छोटे से Googling किया था और इस पाया लैम्ब्डा समारोह नहीं बल्कि उपयोग करने के लिए पता लैम्बडा क्या है पर फिट बैठता है, इसलिए मेरा सवाल है .. एक लैम्ब्डा एक प्रकार का एचओएफ है?

या कोई भी जो अपने संबंध को आगे समझा सकता है?

उत्तर

16

होफ के परिभाषा जो कहते हैं कम से कम एक या एक से अधिक समारोह लेने के लिए या एक समारोह लौटना चाहिए क्या एक लैम्ब्डा

यह करता है पर फिट बैठता है? (lambda (x) (x+1)) (या x => x+1 या \x -> x+1 या fun x -> x+1, आपकी भाषा के वाक्यविन्यास के आधार पर) एक लैम्ब्डा है। हालांकि यह न तो एक कार्य को इसके तर्क के रूप में लेता है (यह एक int लेता है), और न ही यह एक लौटाता है।

तो नहीं, लैम्बडा आवश्यक रूप से उच्च आदेश कार्य नहीं हैं, हालांकि वे हो सकते हैं।

एक लैम्ब्डा एक अज्ञात कार्य है। जैसे यह एक समारोह है। लेकिन यह केवल एक उच्च-आदेश समारोह है यदि यह कोई फ़ंक्शन लेता है या देता है, जो अधिकांश लैम्ब्स नहीं करते हैं। हालांकि लैम्बडा को अक्सर उच्च कार्यों के लिए तर्क के रूप में उपयोग किया जाता है (यानी यदि आप Where(s => s.Length > 5)Where एक उच्च-आदेश फ़ंक्शन है और s => s.Length > 5 एक (प्रथम-आदेश) लैम्ब्डा है), इसलिए वे संबंधित हैं।

+0

धन्यवाद, मुझे लगता है कि अब मैं इसे समझता हूं। – Marconi

0

लैम्ब्डा सिंटैक्स उच्च-आदेश कार्यों के कार्यान्वयन को आसान बनाता है। उदाहरण के लिए, क्रीमिंग एक उच्च-आदेश फ़ंक्शन है जो लैम्ब्डा सिंटैक्स द्वारा आसान बना दिया जाता है।

शायद आप उच्च-आदेश कार्यों को समझने के लिए लैम्ब्डा ऑपरेटर का अध्ययन करना चाहते हैं।

5

यह "लैम्ब्डा" से आपका क्या मतलब है इस पर निर्भर करता है।

आपके द्वारा लिंक किए गए विकिपीडिया पृष्ठ से निम्नलिखित पैराग्राफ एक प्रकार के सैद्धांतिक दृष्टिकोण से स्पष्ट रूप से संबंधों का वर्णन करता है।

"untyped लैम्ब्डा कलन में, सभी कार्यों उच्च क्रम रहे हैं; एक टाइप लैम्ब्डा पथरी, जिसमें से सबसे कार्यात्मक प्रोग्रामिंग भाषाओं में प्राप्त कर रहे हैं, उच्च क्रम कार्यों को आम तौर पर एक से अधिक तीर युक्त प्रकार के साथ होते हैं कार्यात्मक प्रोग्रामिंग में, अन्य कार्यों को लौटने वाले उच्च-आदेश कार्यों को करीबी कहा जाता है। "

दूसरे शब्दों में, प्रकार सैद्धांतिक संदर्भ में, एक समारोह (लैम्ब्डा) हमेशा untyped लैम्ब्डा पथरी में उच्च क्रम है, और टाइप लैम्ब्डा पथरी में उच्च आदेश हो सकता है ... अपने प्रकार हस्ताक्षर के आधार पर ।

यदि हम कुछ प्रोग्रामिंग भाषाओं द्वारा लागू "लैम्ब्डा" निर्माण के बारे में बात कर रहे हैं, तो यह किसी विशेष भाषा में विशेष उपयोग पर 1) वास्तविक भाषा के बारे में बात कर रहा है, और 2) पर निर्भर करता है।

भाषाओं में जहां लैम्बडास अज्ञात प्रथम श्रेणी के कार्य होते हैं, तो आप उम्मीद करेंगे कि उन्हें सक्षम उच्च-आदेश कार्यों को व्यक्त करने में सक्षम होगा। लेकिन एक उच्च-आदेश फ़ंक्शन एक ऐसा फ़ंक्शन होता है जो अन्य कार्यों को तर्क के रूप में लेता है और/या उन्हें परिणाम के रूप में देता है। और एक आवेदन में "लैम्ब्डा" के सभी उपयोग नहीं करेंगे।

+0

आह। मुझे यह स्पष्ट कर दिया जाना चाहिए था कि इस संबंध में भाषा पायथन है। – Marconi

+1

@ मार्कोनी - मेरा उत्तर अभी भी लागू होता है। –

संबंधित मुद्दे