लैंबडा कैलकुलस अमूर्त नहीं लगता था। और मैं इसके बारे में नहीं देख सकता


18

अंतर्निहित प्रश्न:

लैम्ब्डा कैलकुलस हमारे लिए क्या करता है कि हम मूल कार्य गुणों और संकेतन के साथ नहीं कर सकते हैं जो आम तौर पर मिडिल स्कूल बीजगणित में सीखा जाता है?

सबसे पहले, लैम्बडा कैलकुलस के संदर्भ में सार का क्या अर्थ है? अमूर्त शब्द की मेरी समझ कुछ ऐसी है जो मशीनरी से तलाक लेकर एक अवधारणा का सारांश है।

हालाँकि, लैम्ब्डा फ़ंक्शन, फ़ंक्शन नामों के साथ दूर करके, एक निश्चित स्तर के अमूर्तता को रोकता है। उदाहरण के लिए:

f(x) = x + 2
h(x, y) = x + 5 y

लेकिन इन कार्यों की मशीनरी को परिभाषित किए बिना, हम आसानी से उनकी रचना के बारे में बात कर सकते हैं। उदाहरण के लिए:

1. h(x, y) . f(x) . f(x) . h(x, y) or 
2. h . f . f . h

हम चाहें तो तर्कों को शामिल कर सकते हैं, या जो हो रहा है उसका अवलोकन देने के लिए हम पूरी तरह से सार कर सकते हैं। और हम जल्दी से उन्हें एक समारोह में कम कर सकते हैं। आइए रचना को देखें 2. मेरे पास मेरे विवरण के आधार पर विस्तार से छात्र की परतें हो सकती हैं:

g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4

चलो लैम्ब्डा कैलकुलस के साथ उपरोक्त प्रदर्शन करते हैं, या कम से कम कार्यों को परिभाषित करते हैं। मुझे यकीन नहीं है कि यह सही है, लेकिन मेरा मानना ​​है कि 2 द्वारा पहली और दूसरी अभिव्यक्ति वृद्धि।

(λuv.u(u(uv)))(λwyx.y(wyx))x

और 5y से गुणा करना है।

(λz.y(5z))

अमूर्त होने के बजाय, यह लगता है कि इसे जोड़ने का मतलब है, गुणा, आदि के बहुत मशीनरी में मिल जाता है। मेरे दिमाग में अमूर्तता का मतलब है, निचले स्तर के बजाय उच्च स्तर।

इसके अलावा, मैं यह देखने के लिए संघर्ष कर रहा हूं कि लैम्ब्डा कैलकुलस यहां तक ​​कि क्यों है। का फायदा क्या है

(λuv.u(u(uv)))(λwyx.y(wyx))x

ऊपर

h(x) = x + 5 y

या एक संयुक्त संकेतन

Hxy.x+5y

या यहां तक ​​कि हास्केल की धारणा

h x y = x + 5 * y

फिर से, लैम्ब्डा कैलकुलस हमारे लिए क्या करता है कि हम एफ (एक्स) -स्टाइल फ़ंक्शन गुणों के साथ नहीं कर सकते हैं और नोटेशन बहुत से परिचित हैं।


9
यह हास्यास्पद है कि आप हास्केल से एक उदाहरण देते हैं, क्योंकि हास्केल लैम्ब्डा कैलकुलस पर आधारित है। लैम्ब्डा कैलकुलस किसी विशेष संकेतन के बारे में नहीं है। यह एक कम्प्यूटेशनल मॉडल है, जो ट्यूरिंग मशीनों के बराबर है, जिसमें "सब कुछ एक फ़ंक्शन है"।
युवल फिल्मस

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

6
क्या "कोई उद्देश्य तुरंत दिमाग में नहीं आता" लगभग "सार" की परिभाषा है? :-)
डेविड रिचेर्बी

1
मैं यह नहीं कहूंगा कि यह अपमानजनक है। पथरी के माध्यम से कार्यों का उपचार उपचार योग्य है। लेकिन मैं देख सकता हूं कि इस तरह से मिडिल स्कूल का लेबल कैसे लगाया जा सकता है। मैं इसे समायोजित करूंगा।
JDG

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

जवाबों:


24

लैम्ब्डा पथरी इतना महत्वपूर्ण क्यों है, इसके कई कारण हैं।

एक बहुत महत्वपूर्ण कारण है लैम्ब्डा कैलकुलस हमें कम्प्यूटेशन का एक मॉडल बनाने की अनुमति देता है जिसमें कम्प्यूटेशनल फ़ंक्शन प्रथम श्रेणी के नागरिक हैं।

कोई मिडिल स्कूल बीजगणित की भाषा में उच्च-क्रम के कार्यों को व्यक्त नहीं कर सकता है।

उदाहरण के रूप में लंबोदर अभिव्यक्ति को लें

λf.λg.λx.f(g(x))

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

लैम्ब्डा कैलकुलस में, यह व्यक्त करना बहुत आसान है कि एक फ़ंक्शन अपने परिणाम के रूप में एक फ़ंक्शन वापस करेगा।

यहाँ एक छोटा सा उदाहरण है। अभिव्यक्ति (जहां मैं यहां जोड़ और पूर्णांक स्थिरांक के साथ एक लागू लंबो कैलकुलस मान रहा हूं)

(λf.λg.λx.f((g(x)))(λx.x+2)

को कम कर देगा

λg.λx.g(x)+2

सूचना यह भी है कि लंबोदर कलन के भीतर, कार्य भाव हैं और न कि प्रपत्र परिभाषाएँ । यह हमें नाम कार्यों की आवश्यकता और अभिव्यक्ति की एक श्रेणीबद्ध श्रेणी और परिभाषाओं की एक श्रेणीबद्ध श्रेणी के बीच अंतर करने से मुक्त करता है।f(x)=e

इसके अलावा, जब उच्च-क्रम के कार्यों को व्यक्त करना असंभव (या सिर्फ तर्कसंगत रूप से बोझिल) हो जाता है, तो किसी को अभिव्यक्ति के प्रकारों को निर्दिष्ट करने में भी समस्या होगी।

समारोह रचना में बहुरूपता प्रकार है

α.β.γ.(βγ)((αβ)γ)

हिंडले-मिलनर प्रकार प्रणाली में।

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

एक कार्यक्रम तो अच्छी तरह से लिखा गया हो और अवशिष्ट को कम कर देता है ' है, तो ' भी अच्छी तरह से टाइप हो जाएगा।eeee

और यदि अच्छी तरह से टाइप किया गया है, तो कुछ त्रुटियों को प्रदर्शित नहीं करेगा।ee

सबूत कार्यक्रमों के रूप में पत्राचार विशेष रूप से उल्लेखनीय है। करी-हावर्ड isomorphism (उदाहरण देखें https://www.rocq.inria.fr/semdoc/Presentations/20150217_PierreMariePedrot.pdf ) दर्शाता है कि बस टाइप किए गए लंबो कैलकुलस और अंतर्ज्ञानवादी प्रस्ताव तर्क के बीच बहुत सटीक तर्क है: प्रत्येक प्रकार के लिए एक तार्किक सूत्र से मेल खाती है φ टीProof T का एक प्रमाण प्रकार T के साथ एक लंबेड टर्म से मेल खाता है , और इस शब्द का बीटा-कमी प्रमाण में कटौती उन्मूलन के अनुरूप है।TϕTϕTT

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


यह महान व्याख्या है। यह सुनने में मददगार है कि उच्च-क्रम के कार्य (जैसे कि रचना) और टाइपिंग का बेहतर प्रतिनिधित्व लैम्ब्डा कैलकुलस में किया जाता है, यहाँ तक कि यह भी प्रमाण और प्रोविडेबल कोड की सुविधा प्रदान करता है। मैंने जो उल्लेख किया है, उसमें से अधिकांश के प्रभाव को नहीं देखा है और पारंपरिक अंकन अपर्याप्त क्यों है (उदाहरण के लिए, एक अलग परिभाषा सिंटैक्स f (x) = e) की आवश्यकता नहीं है, हालांकि यह मददगार है कि आपने इनमें से कुछ कारणों का नाम दिया है और यह इस बात का बोध कराता है कि लैम्ब्डा पथरी से किन क्षेत्रों में सुधार होता है।
JDG

पाठ्यक्रम की स्थानीय परिभाषाओं को एक रूप लेकिन ये पहले से ही लंबो कैलकुलस के सिंटेक्स में व्यक्त किए जा सकते हैं ( λ x e ) । लैम्ब्डा कैलकुलस बिना किसी का नाम लिए हमें कार्यों को व्यक्त करने की अनुमति देता है, जैसे कि एक (मिडिल स्कूल बीजगणित में!) नंबर 4 की बात करतेहुए उन्हें कुछ चर द्वारा नाम दिए बिना। letx=eine(λx.e)e4
हंस Hüttel

5

जब कार्यों को पहली बार युवाओं के लिए वर्णित किया जाता है, तो उन्हें अनिवार्य रूप से रेखांकन (भूखंडों), या शायद सूत्रों के साथ पहचाना जाता है; इस तरह से गणित में औपचारिकतावादी प्रवृत्तियों के आगमन से पहले कार्यों को ऐतिहासिक रूप से समझा गया था। आजकल काम करता है, के रूप में पहले साल पथरी में पढ़ाया जाता है, असली काम करता है, यह है कि, से कार्य हैं के आरRR

लैम्ब्डा कैलकुलस में कार्य बहुत अधिक सामान्य हैं। सटीक परिभाषा इस बात पर निर्भर करती है कि आपका लैम्ब्डा कैलकुलस टाइप किया गया है या अनपेड। शुद्ध अप्रकाशित लैम्ब्डा कैलकुलस में सब कुछ एक फ़ंक्शन है। यह पथरी के वास्तविक कार्यों की तुलना में बहुत अधिक सामान्य है।

यहां तक ​​कि प्रक्रियात्मक भाषाएं कभी-कभी लंबो कैलकुलस के विचारों का उपयोग करती हैं। सी में सॉर्टिंग फ़ंक्शन एक पैरामीटर फ़ंक्शन के रूप में स्वीकार करता है , जिसका उपयोग वह तत्वों की तुलना करने के लिए करता है। लैम्ब्डा कैलकुलस बहुत आगे जाता है - फ़ंक्शंस न केवल फ़ंक्शंस को इनपुट के रूप में स्वीकार करते हैं, बल्कि उन्हें आउटपुट भी कर सकते हैं।

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

मुझे संदेह है कि लैंबडा कैलकुलस से प्रभावित नहीं होने का एक कारण यह है कि इसके विचारों ने प्रोग्रामिंग प्रवचन को इतना बढ़ा दिया है कि यह अब अभिनव नहीं लगता है।


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

इससे पहले कि मैं कुछ भी जानता था। मुझे लगा कि कोड को बार-बार टाइप करने के लिए परेशान किया जा रहा है और उस प्रोग्रामिंग से मुझे ऑटो फंक्शनल को बनाने में मदद करनी चाहिए, जिसमें फ़ंक्शन भी शामिल हैं।
JDG

2
पायथन कार्यात्मक प्रोग्रामिंग का समर्थन करता है। पहली प्रोग्रामिंग लैंग्वेज नहीं थी। यदि आपने फोरट्रान में प्रोग्राम किया था, तो आपने पाठ वाले कार्यों के साथ प्रोग्राम नहीं बनाए होंगे जिनका आपने बाद में मूल्यांकन किया था। इसे भी देखे बिना, आपने लैम्ब्डा कैलकुलस के विचारों द्वारा प्रदान की गई क्षमताओं का उपयोग किया।
युवल फिल्मस

2
Eval में जन्म लिया लिस्प , जो दृढ़ता से लैम्ब्डा पथरी से प्रभावित था। ऐसा कुछ FORTRAN, C, COBOL और कई अन्य प्रोग्रामिंग भाषाओं में संभव नहीं है।
युवल फिल्मस 12

हाँ, अजगर कार्यात्मक progamming का समर्थन करता है --- लेकिन मुझे यकीन नहीं है कि यह eval है () क्षमता λCalc से प्रेरित थी --- आप यह सोचने के लिए λCalc नहीं है: मैं कोड को स्वतः उत्पन्न करना चाहता हूं जिसे मैं बाद में निकाल सकता हूं। यह कहने की तरह है कि λCalc को सोचना आवश्यक है, "मैं मिरांडा से कहूंगा कि वह अपने विभाग को चलाने के लिए अपने सर्वोत्तम निर्णय का उपयोग करें" --- दूसरे शब्दों में अपने कार्यों को उत्पन्न करने के लिए एक फ़ंक्शन प्राप्त करना। उच्च-स्तरीय कार्यों को प्रस्तुत करने के बारे में सोचने के लिए आपको λCalc की आवश्यकता नहीं है। यदि आप λCalc से प्रेरणा ड्राइंग के बारे में बात करना चाहते हैं, तो यह लंबोदा कार्यों, समझ, आदि के लिए अधिक उपयुक्त बिंदु है
JDG

4

x2xx2

λx.x2x2

ff(x)=x2f

प्रोग्रामिंग भाषाओं में लैम्ब्डा अभिव्यक्तियों के उपयोग का एक समान लाभ है; आप यह लिख सकते हैं कि फंक्शन वहीं करता है जहाँ आपके कार्यक्रम में कहीं और एक नए फंक्शन को परिभाषित करने की बजाय इसकी आवश्यकता है।

तुम भी गणित में निहित लैम्ब्डा अमूर्त देख सकते हैं; उदाहरण के लिए पथरी के छात्रों को केवल डेरिवेटिव के बारे में पढ़ाया जाता हैddxx2ddxx2


θ:VV

θ(v)(f)=f(v)

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

θ=λv.λf.f(v)

उस समस्या नहीं है।


अंत में, अमूर्त बकवास का एक प्रमेय है कि "बस टाइप किए गए लंबो कैलकुलस" मूल रूप से "कार्टेशियन बंद श्रेणी" के समान है - इसलिए यदि आप कभी भी कार्टेशियन बंद श्रेणी में गणना करना चाहते हैं, तो इसका उपयोग करना एक अच्छा विचार है। बस ऐसा करने के लिए लैम्ब्डा कैलकुलस टाइप किया।


मैं इस सवाल पर वापस आ रहा हूं और मुझे यह जवाब बहुत अच्छा लग रहा है। धन्यवाद। सामान्य तौर पर यहां के उत्तर वास्तव में दिलचस्प हैं।
JDG

4

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

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

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

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

जो नियमित अभिव्यक्ति में अपनाया गया, और किसी और (बेतकल्लुफ़ याद नहीं आ रहा), जो अभी तक एक और तरीका विकसित किया था। इन सभी को एक आधार पर गणित की एक प्रणाली बनाने के प्रयास में विकसित किया गया था जो शुरुआत से रचनात्मक परिभाषाएं देगा।

फिर यह दिखाया गया कि लैम्ब्डा कैलकुलस और ट्यूरिंग मशीन दोनों किसी भी कम्प्यूटेशनल फ़ंक्शन का प्रतिनिधित्व कर सकते हैं और इस प्रकार समतुल्य हैं।

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

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

उम्मीद है की वो मदद करदे।

जोड़ने के लिए संपादित करें: मुझे सिर्फ इस पेपर की ओर इशारा किया गया था , जो टोपोलॉजी, लैम्ब्डा कैलकुलस और फिजिक्स के बीच के संबंध को दर्शाता है। इस पर संक्षिप्त रूप से संक्षेप में मैं इस शानदार कथन पर भाग गया:

जबकि ट्यूरिंग मशीन को कंप्यूटर हार्डवेयर के एक आदर्श, सरलीकृत मॉडल के रूप में देखा जा सकता है , लैंबडा कैलकुलस सॉफ्टवेयर के एक सरल मॉडल की तरह है । ... काव्यात्मक रूप से, लैम्ब्डा कैलकुलस एक ब्रह्मांड का वर्णन करता है जहां सब कुछ एक प्रोग्राम है और सब कुछ डेटा है: प्रोग्राम डेटा हैं

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


इतिहास के बारे में अधिक जानकारी: दर्शन के स्टैनफोर्ड एनसाइक्लोपीडिया में λ-पथरी का संक्षिप्त इतिहास । उनके पास एक से अधिक प्रविष्टियाँ हो सकती हैं जो जीवन भर चल सकती हैं।
डेविड टोनहोफर


3

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


1
"दशकों पहले भी हमारे पास प्रोग्रामेबल कंप्यूटर थे" - गलत। प्रोग्रामेबल कंप्यूटर पहले अस्तित्व में था (यदि शायद सार्वभौमिक नहीं हैं) और 1930 के दशक के दौरान पहले सार्वभौमिक कंप्यूटर बनाए गए थे।
राफेल

-2

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

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

"क्यों लैम्ब्डा कैलकुलस भी एक बात है" गणितज्ञ अतिरेक से प्यार करते हैं। lambda पथरी शायद ही कभी गणित में प्रयोग किया जाता है क्योंकि जैसा कि आपने पाया है कि नोटेशन बहुत उपयोगी नहीं है।

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


कुछ राय के अलावा, यह उत्तर क्या प्रदान करता है?
राफेल

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

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