क्या लैम्ब्डा कैलकुलस विशुद्ध रूप से वाक्यात्मक है?


29

मैं लैम्बडा कैलकुलस के बारे में कुछ हफ्तों से पढ़ रहा हूं, लेकिन मैंने अभी तक ऐसा कुछ भी नहीं देखा है जो मौजूदा गणितीय कार्यों से अलग हो, और मैं जानना चाहता हूं कि क्या यह सिर्फ नोटेशन का मामला है, या कोई नया है लैम्ब्डा कैलकुलस एक्सिओम्स द्वारा बनाए गए गुण या नियम जो हर गणितीय फ़ंक्शन पर लागू नहीं होते हैं। इसलिए, उदाहरण के लिए, मैंने पढ़ा है कि:

"अनाम कार्य हो सकते हैं" : लैम्ब्डा फ़ंक्शन अनाम नहीं हैं, वे सभी लैंबडा कहलाते हैं। यदि नाम महत्वपूर्ण नहीं है, तो विभिन्न कार्यों के लिए एक ही चर का उपयोग करने के लिए गणितीय संकेतन में अनुमति है। उदाहरण के लिए, गलाइस कनेक्शन में दो कार्यों को अक्सर दोनों * कहा जाता है।

"फ़ंक्शंस फ़ंक्शंस को इनपुट के रूप में स्वीकार कर सकते हैं" : नया आप सामान्य कार्यों के साथ ऐसा नहीं कर सकते।

"फ़ंक्शंस ब्लैक बॉक्स हैं" : बस इनपुट और आउटपुट गणितीय कार्यों के मान्य विवरण हैं ...

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


2
मैं इसमें से पूर्ण उत्तर नहीं देना चाहता, लेकिन फ़ंक्शंस को इनपुट के रूप में कार्य स्वीकार नहीं कर सकता। मैं एफ (जी (0)) लिख सकता हूं, लेकिन मैं एफ (जी, 0) नहीं लिख सकता। उत्तरार्द्ध को "कार्यात्मक" कहा जाता है और विभिन्न नियमों के लिए कॉल करता है।
Cort Ammon - मोनिका

@CortAmmon फ़ंक्शंस फ़ंक्शन हैं। एक फ़ंक्शन जोड़े का एक सेट है (हालांकि, कड़ाई से बोलते हुए, यह एक ट्रिपल (डी, आर, जी) है जहां डी डोमेन आर है, रेंज है और जी ग्राफ (जोड़े का सेट) है, एक और छोटा मुद्दा है मेरे पास स्वीकृत उत्तर के साथ, लेकिन वह न तो यहां है और न ही)। इसलिए यदि D फ़ंक्शन का एक सेट है और आप ऐसे जोड़े लेते हैं जहां पहला तत्व डी में एक फ़ंक्शन है, तो आपके पास एक फ़ंक्शन है। विकिपीडिया की जाँच करें: "एक कार्यात्मक एक मानचित्रण है [कार्य] ..."
नील

अर्थात सभी कार्य कार्य हैं, सभी कार्य कार्यात्मक नहीं हैं। लेकिन फ़ंक्शंस पर लागू होने वाले सभी नियम कार्यात्मक पर लागू होते हैं
नील

जवाबों:


63

विडंबना यह है कि शीर्षक बिंदु पर है लेकिन उस तरह से नहीं है जैसा कि आप इसका मतलब समझते हैं जो कि "लंबो कैलकुलस सिर्फ एक उल्लेखनीय सम्मेलन" है जो सटीक नहीं है।

लैम्ब्डा शब्द 1 फ़ंक्शन नहीं हैं । वे वाक्य रचना के टुकड़े हैं, अर्थात एक पृष्ठ पर प्रतीकों का संग्रह। हमारे पास प्रतीकों के इन संग्रहों में हेरफेर करने के नियम हैं, सबसे महत्वपूर्ण रूप से बीटा में कमी। आप एक से अधिक हो सकता है अलग लैम्ब्डा शब्दों के अनुरूप ही कार्य करते हैं। 2

मैं सीधे आपकी बातों को संबोधित करूंगा।

λ(x)(λ x)λf(x)f(x)f(λy.y)(x)(λy.y) एक ऐसी अभिव्यक्ति है जो एक फ़ंक्शन का प्रतिनिधित्व कर सकती है, न कि एक फ़ंक्शन (λ या कुछ औरनाम) कीघोषणा करने वाली घोषणा। किसी भी दर पर, जब हम शब्दावली / अंकन को अधिभारित करते हैं, तो यह (एक उम्मीद) ऐसे तरीके से किया जाता है, जहां इसे संदर्भ के माध्यम से विघटित किया जा सकता है, यह निश्चित रूप से लंबोदर शर्तों के लिए नहीं हो सकता है।

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

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

F2 F2F24F2F2F2F22N2N

यह लंबोदर शर्तों पर भी लागू होता है, हम दोनों को कार्यों के अलावा अन्य चीजों के रूप में व्याख्या कर सकते हैं। वे आम तौर पर कार्यों के अनजाने अनंत सेटों की तुलना में काम करने के लिए दोनों बहुत अधिक ट्रैक्टेबल ऑब्जेक्ट हैं। वे दोनों मनमाने कार्यों की तुलना में बहुत अधिक कम्प्यूटेशनल हैं। मैं बहुपदों (गुणांक के साथ, जो कम से कम प्रतिनिधित्व करने योग्य हैं) और लंबरदार शब्दों में हेरफेर करने के लिए एक कार्यक्रम लिख सकते हैं। वास्तव में, अप्रयुक्त लंबोदर शब्द कम्प्यूटेशनल कार्यों के मूल मॉडल में से एक हैं। यह अधिक प्रतीकात्मक / वाक्य-विन्यास, गणनात्मक / कम्प्यूटेशनल परिप्रेक्ष्य आमतौर पर अधिक जोर दिया जाता है, विशेषकर बिना लैंबडा कैलकुलस के लिए, लैम्ब्डा कैलकुलस की अधिक अर्थ व्याख्याओं की तुलना में। लिखे गएलैम्ब्डा शब्द अधिक प्रबंधनीय चीजें हैं और आमतौर पर (लेकिन हमेशा नहीं) को आसानी से सेट थ्योरेटिक कार्यों के रूप में व्याख्या की जा सकती है, लेकिन आमतौर पर बिना लैंब्डा कैलकुलस की तुलना में कार्यों के अलावा और भी व्यापक श्रेणी में व्याख्या की जा सकती है। उनके पास अपने स्वयं के एक समृद्ध सिंटैक्टिक सिद्धांत और तर्क के लिए बहुत गहरा संबंध भी है

1 यह संभव है कि मुद्दा दूसरे रास्ते पर जाए। हो सकता है कि आपको गलतफहमी हो कि कोई फंक्शन क्या है।

DDDDDD, और सेट की श्रेणी के लिए कोई गैर-तुच्छ रिफ्लेक्टिव ऑब्जेक्ट नहीं हैं। टाइप किए गए लंबोदर शब्दों के लिए कहानी काफी अलग है , लेकिन फिर भी गैर-तुच्छ हो सकती है।

3 यदि आप इस अंतर पर स्पष्ट हैं, तो सादृश्य बहुत जानकारीपूर्ण होना चाहिए।

4 यह समस्या विशेषता 0 के क्षेत्रों के साथ नहीं होती है, जैसे कि जटिल संख्या, वास्तविक, तर्कसंगत या पूर्णांक, इसलिए भेद उतना तेज नहीं है, हालांकि यह अभी भी मौजूद है।


8
यह एक अद्भुत प्रतिक्रिया है जो मुझे अभी कहना है। वास्तव में मेरे लिए कुछ लंबी गलतफहमियों को दूर करता है। धन्यवाद!
the0ther

4
काश मैं इस पर विस्तार से जवाब दे पाता! बहुत सी चीजें मैं फॉलो करना चाहूंगा। कुल मिलाकर हालांकि यह मेरे लिए बहुत उपयोगी था, और जाहिरा तौर पर कुछ अन्य लोगों के लिए भी, इसलिए पूरी तरह से और माना जवाब के लिए धन्यवाद।
नील

1
वहाँ सिर्फ एक बिंदु है जिसे मैं यहाँ ले जाऊँगा, जो कि आपका दावा है कि बहुपदों को अध्ययन करने लायक होने के लिए "कुछ" नया "करने" की ज़रूरत नहीं है। बेशक वे करते हैं! बेशक, आपके क्षेत्र के आधार पर, "नया" के अलग-अलग अर्थ हो सकते हैं (इसलिए उदाहरण के लिए एक शुद्ध गणितज्ञ कॉलम वैक्टर और पंक्ति वैक्टर के बीच अंतर नहीं करेगा क्योंकि वे आइसोमोर्फिक हैं, लेकिन एक सांख्यिकीविद् गणक को अभिकलन उद्देश्यों के लिए उपयोगी मान सकते हैं)। किसी भी नई औपचारिकता को खुद को सही ठहराना होगा।
नील

2
@ नील: फुटनोट # 2 विशेष रूप से कुछ बहुत ही स्पष्ट प्रमाण प्रस्तुत करता है कि लैंबडा कैलकुलस "कुछ नया करता है" जो "नियमित" कार्य नहीं कर सकता है। गैर-अच्छी तरह से स्थापित लैम्ब्डा अभिव्यक्ति के अधिक ठोस उदाहरण के लिए, फिक्स्ड-पॉइंट कॉम्बिनेटर देखेंचर्च अंकों के भी आकर्षक पढ़ने, विशेष रूप से पूर्ववर्ती समारोह के लिए बनाते हैं।
केविन

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

0

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

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


मैं पारंपरिक नामित कार्यों के साथ ऐसा क्यों नहीं कर सकता? अगर मैं लिखता हूं f(x)=let g(y)=x+y in g, तो हर गणितज्ञ को तुरंत पता चल जाएगा कि इसका क्या मतलब है और सहमत यह एक समझदार गणितीय वस्तु है (शायद डोमेन के बारे में स्पष्ट होने के बारे में कुछ सवाल पर निर्भर करता है f)। वे भी पूरी तरह से खुश होंगे अगर मैं फिर सेट लिखता हूं {f(n) | n ∈ ℕ}, जिसमें असीम रूप से कई कार्य शामिल हैं और विशेष रूप से केवल सीमित संख्या में उपयोग करने के लिए सीमित नहीं है।
डेनियल वैगनर

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