लैम्ब्डा कैलकुलस में अनाम होना कार्यों के लिए क्यों महत्वपूर्ण है?


19

मैं जिम वेइरिच का व्याख्यान देख रहा था, जिसका शीर्षक था ' एडवेंचर्स इन फंक्शनल प्रोग्रामिंग '। इस व्याख्यान में, वह वाई-कॉम्बिनेटरों की अवधारणा का परिचय देता है, जो अनिवार्य रूप से उच्च आदेश कार्यों के लिए निर्धारित बिंदु पाता है।

प्रेरणाओं में से एक, जैसा कि वह इसका उल्लेख करता है, लैम्ब्डा कैलकुलस का उपयोग करके पुनरावर्ती कार्यों को व्यक्त करने में सक्षम होना है ताकि चर्च द्वारा सिद्धांत (प्रभावी रूप से गणना योग्य है कि लैम्ब्डा कैलकुलस का उपयोग करके गणना की जा सके) रहता है।

समस्या यह है कि एक फ़ंक्शन खुद को बस इतना नहीं कह सकता, क्योंकि लैम्ब्डा कैलकुलस नामित कार्यों की अनुमति नहीं देता है, अर्थात

n(एक्स,y)=एक्स+y

' ' नाम को सहन नहीं कर सकते , इसे गुमनाम रूप से परिभाषित किया जाना चाहिए:n

(एक्स,y)एक्स+y

लैंबडा कैलकुलस के लिए ऐसे कार्य क्यों महत्वपूर्ण हैं जिनके नाम नहीं हैं? यदि नामित कार्य हैं तो किस सिद्धांत का उल्लंघन किया गया है? या यह है कि मैं सिर्फ जिस्म के वीडियो को गलत समझ रहा हूं?


4
यह सब महत्वपूर्ण नहीं लगता है। आप एक चर असाइन कर सकते हैं और फिर आपने फ़ंक्शन को एक नाम दिया है। n(एक्स,टी)एक्स+yn
युवल फिल्मस

@YuvalFilmus हाँ, आप किसी फ़ंक्शन को नाम बाँध सकते हैं। मुझे लगता है कि असली सवाल यहाँ, पहेली है, यही कारण है कि (लैम्ब्डा कैलकुलस में) एक फ़ंक्शन को इस तरह के नाम से नहीं बुलाया जा सकता है? पुनरावर्ती कार्यों को करने के लिए हमें वाई ऑपरेटर जैसी तकनीक की आवश्यकता क्यों है? मुझे आशा है कि नीचे मेरा जवाब मदद करता है।
जेरी

1
@ जेरी १०११ स्व-अनुप्रयोग की अनुपस्थिति का ऐतिहासिक कारण यह है कि -calculus का उद्देश्य गणित की नींव होना था, और स्व-आवेदन करने की क्षमता इस तरह की नींव को तुरंत असंगत बना देती है। तो यह स्पष्ट अक्षमता (जिसे हम जानते हैं कि अब इसे दरकिनार किया जा सकता है) _ कैलकुलस की एक डिज़ाइन विशेषता है । λλλ
मार्टिन बर्गर

@MartinBerger कृपया और कहें। मेरे उत्तर में कारण के लिए असंगत? या किसी अन्य कारण से?
जेरी

1
@ जैरी101 इस अर्थ में असंगत है कि आप गणित की ऐसी नींव में 0 = 1 को साबित कर सकते हैं। क्लेन और रोसेर के बाद शुद्ध, अप्राप्य -calculus की असंगति दिखाई गई , बस-टाइप किए गए λ -calculus को एक विकल्प के रूप में विकसित किया गया था जो हमें Y जैसे फिक्स-पॉइंट कॉम्बींटर्स को परिभाषित करने की अनुमति नहीं देता है । लेकिन अगर आप बस टाइप किए गए λ -calculus में पुनरावृत्ति जोड़ते हैं तो यह फिर से असंगत हो जाता है, क्योंकि प्रत्येक प्रकार एक गैर-समाप्ति कार्यक्रम द्वारा बसा हुआ है। λλYλ
मार्टिन बर्गर

जवाबों:


24

इस मुद्दे के बारे में मुख्य प्रमेय 16 वीं शताब्दी के अंत से एक ब्रिटिश गणितज्ञ के कारण है, जिसे विलियम शेक्सपियर कहा जाता है । इस विषय पर उनका सबसे अच्छा ज्ञात पेपर " रोमियो एंड जूलियट " शीर्षक से 1597 में प्रकाशित किया गया था, हालांकि कुछ साल पहले शोध कार्य किया गया था, लेकिन आर्थर ब्रुक और विलियम पेंटर जैसे पूर्ववर्ती।

उसका मुख्य परिणाम, अधिनियम II में बताया गया है दृश्य II , प्रसिद्ध प्रमेय है :

नाम में क्या है? जिसे हम गुलाब कहते हैं,
किसी भी अन्य नाम से मिठाई के रूप में गंध आती है;

इस प्रमेय को स्पष्ट रूप से समझा जा सकता है "नामों का अर्थ में योगदान नहीं है"।

कागज का बड़ा हिस्सा एक उदाहरण के लिए समर्पित है जो प्रमेय को पूरक करता है और यह दर्शाता है कि भले ही नामों का कोई अर्थ न हो, लेकिन वे अंतहीन समस्याओं का स्रोत हैं।

जैसा कि शेक्सपियर द्वारा बताया गया है, नाम को बिना अर्थ बदले, एक ऑपरेशन में बदला जा सकता है जिसे बाद में अलोंजो चर्च और उनके अनुयायियों द्वारा -conversionα कहा गया । एक परिणाम के रूप में, यह निर्धारित करने के लिए जरूरी नहीं है कि एक नाम से क्या दर्शाया जाता है। यह कई तरह के मुद्दों को उठाता है जैसे कि पर्यावरण की अवधारणा को विकसित करना जहां नाम-अर्थ एसोसिएशन निर्दिष्ट किया जाता है, और यह जानने के लिए नियम हैं कि वर्तमान परिवेश क्या है जब आप किसी नाम से जुड़े अर्थ को निर्धारित करने का प्रयास करते हैं। इसने कुख्यात जैसे तकनीकी कठिनाइयों को जन्म देते हुए कुछ समय के लिए कंप्यूटर वैज्ञानिकों को चकित कर दिया फ़नर्ग समस्या। कुछ लोकप्रिय प्रोग्रामिंग भाषाओं में वातावरण एक मुद्दा बना हुआ है, लेकिन इसे आमतौर पर शारीरिक रूप से असुरक्षित माना जाता है, लगभग उतना ही घातक जितना कि शेक्सपियर ने अपने पेपर में काम किया था।

यह मुद्दा औपचारिक भाषा सिद्धांत में उठाई गई समस्याओं के भी करीब है , जब अक्षर और औपचारिक प्रणालियों को एक समरूपता तक परिभाषित किया जाना है , ताकि यह रेखांकित किया जा सके कि अक्षर के प्रतीक अमूर्त निकाय हैं , वे "भौतिकता" के रूप में कैसे स्वतंत्र हैं कुछ सेट से तत्व।

शेक्सपियर के इस प्रमुख परिणाम से यह भी पता चलता है कि विज्ञान तब जादू और धर्म से विमुख हो रहा था, जहाँ एक होने या एक अर्थ का सही नाम हो सकता है ।

इस सब का निष्कर्ष यह है कि सैद्धांतिक काम के लिए, यह अक्सर अधिक सुविधाजनक होता है कि नामों से नहीं जुड़ा जा सके, भले ही यह व्यावहारिक काम और रोजमर्रा की जिंदगी के लिए सरल महसूस हो। लेकिन याद रखें कि माँ कहलाने वाली हर कोई आपकी माँ नहीं है।

नोट :
इस मुद्दे को 20 वीं सदी के अमेरिकी तर्कशास्त्री गर्ट्रूड स्टीन द्वारा हाल ही में संबोधित किया गया था । हालाँकि, उनके गणितज्ञ सहकर्मी अभी भी उनके मुख्य प्रमेय के सटीक तकनीकी निहितार्थ की ओर इशारा कर रहे हैं :

गुलाब एक गुलाब है गुलाब एक गुलाब है।

1913 में "सेक्रेड एमिली" नामक एक छोटे से संचार में प्रकाशित हुआ।


3
अतिरिक्त नोट: हाल के दशकों में "गुलाब" (कंप्यूटर विज्ञान में) को ज्यादातर "फोब्बर" (और उसके कुछ हिस्सों) द्वारा प्रतिस्थापित किया गया है, एक नाम के लिए विहित उदाहरण के रूप में जो किसी अन्य के रूप में अच्छा है। यह वरीयता स्पष्ट रूप से अमेरिकी रेल इंजीनियरों द्वारा पेश की गई है।
फ्रैंकव

कहा कि, अक्सर इस्तेमाल की जाने वाली अवधारणाओं के लिए विहित नाम कुशल संचार के लिए महत्वपूर्ण हैं।
राफेल

1
@ राफेल सहमत हैं, लेकिन मैं इसे रोजमर्रा की जिंदगी की श्रेणी में रखूंगा। और हम कैसे जानते हैं कि वास्तव में विहित क्या है? फिर भी, मैं अक्सर चिंता महसूस करता हूं जब मैं छात्रों को एक ईश्वर-प्रदत्त सत्य के लिए सभी शब्दावली, संकेतन और परिभाषा (या यहां तक ​​कि कुछ प्रमेय बताए जाते हैं) ले रहा हूं। यहां भी, एसई पर, छात्र प्रश्न पूछते हैं, यह महसूस करते हुए कि हम उनकी सूचनाओं को नहीं जानते हैं, या वे जो परिभाषाएं कक्षा में उपयोग करते हैं। सच्चे नामों का जादू आसानी से नहीं मरता।
बबौ

10

मैं एक राय है कि @babou और @YuvalFilmus के उन लोगों से अलग है उद्यम चाहते हैं: यह है महत्वपूर्ण शुद्ध के लिए λ -calculus अनाम प्रक्रियाएं है। केवल नाम वाले कार्यों के साथ समस्या यह है कि आपको पहले से जानना होगा कि आपको कितने नामों की आवश्यकता होगी। लेकिन शुद्ध λ -calculus में आपके पास उपयोग किए जाने वाले कार्यों की संख्या पर कोई प्राथमिकता नहीं है (पुनरावृत्ति के बारे में सोचें), इसलिए आप या तो (1) अनाम कार्यों का उपयोग करते हैं, या (2) आप π -calculus मार्ग पर जाते हैं और एक नया प्रदान करते हैं नाम Combinator ( νx.P में π -calculus) कि रन-टाइम में ताजा नाम के एक अटूट आपूर्ति देता है।

शुद्ध λ -calculus में पुनरावृत्ति के लिए एक स्पष्ट तंत्र नहीं होने का कारण यह है कि शुद्ध λ -calculus को मूल रूप से A. चर्च द्वारा गणित की नींव रखने का इरादा था, और पुनरावृत्ति ऐसी नींव को तुच्छ रूप से अनसुना कर देता है। इसलिए यह एक झटका के रूप में आया जब स्टीफन क्लेने और जेबी रोजर्स ने पाया कि शुद्ध λ -कल्कुलस गणित की नींव ( क्लेने-रोजर विरोधाभास ) के रूप में अनुपयुक्त है । हास्केल करी ने क्लेने-रोसेर विरोधाभास का विश्लेषण किया और महसूस किया कि इसका सार वह है जिसे अब हम वाई-कॉम्बिनेटर के रूप में जानते हैं।

@ बाबू की टिप्पणी के बाद जोड़ा गया: नाम वाले कार्यों में कुछ भी गलत नहीं है। आप इसे निम्नानुसार कर सकते हैं: एलटी=मैंnएन कॉल-बाय-वैल्यू λ -calculus के लिए (λएन) लिए एक शॉर्टहैंड है ।λ


1
मुझे लगता है कि ओपी कार्यों को नाम देने की क्षमता चाहता था, गुमनाम लोगों को मना करने के लिए नहीं। इसने कहा, मुझे लगता है कि गुमनाम कार्यों की आवश्यकता के बारे में λ-पथरी की किसी भी आवश्यकता को लिस्प / योजना या एमएल जैसी भाषाओं में दिखाया जाएगा। लिस्प / योजना के मामले में, मूल्यांकनकर्ताओं की मेटा-परिपत्रता को आवश्यकतानुसार नए नाम बनाने के लिए संभव बनाना चाहिए, हालांकि मुझे यकीन नहीं है कि मैं इसे औपचारिक प्रणाली में इस तरह से चाहूंगा। जब कोई पुनरावृत्ति पहले से उपयोग किए गए नामों के स्थानीय पुन: उपयोग की अनुमति देता है, तो अनबाउंड संख्या में कार्यों का उपयोग जरूरी नहीं है।
बबौ

λλ

क्या अंतिम पंक्ति को पढ़ा जाना चाहिए (लैम्ब्डा एफ। एन) एम?
को पर्सन

@JohehePerson हाँ, अच्छी तरह से देखा जाता है। फिक्स्ड। धन्यवाद।
मार्टिन बर्जर

4

मेरा मानना ​​है कि विचार यह है कि नाम आवश्यक नहीं हैं। कुछ भी जो नामों की आवश्यकता प्रतीत होता है, उसे गुमनाम कार्यों के रूप में लिखा जा सकता है।

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

लैम्ब्डा कैलकुलस में बिंदु यह है कि सबसे बुनियादी स्तर पर एक एल्गोरिथ्म का वर्णन करने के लिए नामों की आवश्यकता नहीं होती है।


4

मैं यहां अब तक 3 उत्तरों का आनंद ले रहा हूं - विशेष रूप से @ बाबू के शेक्सपियरन विश्लेषण - लेकिन वे प्रकाश नहीं डालते हैं जो मुझे लगता है कि प्रश्न का सार है।

जब भी आप किसी फंक्शन में फंक्शन को लागू करते हैं तो λ-पथरी फ़ंक्शन के नाम को बाँधती है। मुद्दा नामों की कमी का नहीं है।

"समस्या यह है कि एक फ़ंक्शन अपने नाम का हवाला देकर केवल कॉल नहीं कर सकता है"।

(शुद्ध लिस्प में, नाम -> फ़ंक्शन बाइंडिंग फ़ंक्शन के शरीर के दायरे में नहीं है। फ़ंक्शन को अपने नाम से कॉल करने के लिए, फ़ंक्शन को फ़ंक्शन को संदर्भित करने वाले वातावरण को संदर्भित करना होगा। शुद्ध लिस्प में कोई भी नहीं है। चक्रीय डेटा संरचनाएं। इंप्रूव लिस्प इसे पर्यावरण को म्यूट करके करता है जिसे फ़ंक्शन संदर्भित करता है।)

जैसा कि @MartinBerger ने बताया, ऐतिहासिक कारण जो λ-पथरी को फ़ंक्शन द्वारा स्वयं को कॉल करने की अनुमति नहीं देता है, करी तर्क को गणित के आधार के रूप में λ-पथरी का उपयोग करने की कोशिश करते समय करी के विरोधाभास को खारिज करने का एक प्रयास था , जिसमें प्रेरक तर्क भी शामिल थे। यह काम नहीं किया क्योंकि वाई कॉम्बिनेटर जैसी तकनीकें आत्म-संदर्भ के बिना भी पुनरावृत्ति की अनुमति देती हैं।

विकिपीडिया से:

हम समारोह को परिभाषित कर सकते हैं r = (λ.x x x ⇒ y)तो r r = (r r ⇒ y)

अगर r rसच है तो yसच है। अगर r rझूठ है तो r r ⇒ yसच है, जो एक विरोधाभास है। तो yयह सच है और जैसा yकि कोई भी बयान हो सकता है, कोई भी कथन सही साबित हो सकता है।

r rएक गैर-समाप्ति संगणना है। तर्क के रूप में माना r rएक मूल्य के लिए एक अभिव्यक्ति है जो मौजूद नहीं है।


λएक्स एक्सएक्सएक्सएक्सएक्स

@ रोहनप्रभु λ.x x xने लिस्प के रूप में (lambda (x) (x x))और जावास्क्रिप्ट के रूप में अनुवाद किया function (x) {return x(x);}x⇒yइसका मतलब है x implies y, उसी के बारे में (NOT x) OR y। देखें en.wikipedia.org/wiki/Lambda_calculus
Jerry101

उस शर्मनाक बदमाश सवाल का जवाब देने के लिए धन्यवाद!
रोहन प्रभु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.