एक लैम्ब्डा कैलकुलस मूल्यांकन जिसमें चर्च अंक शामिल हैं


10

मैं समझता हूँ कि एक चर्च अंक जैसा दिखता है (... n टाइम्स ...) । इसका मतलब है कि "फ़ंक्शन को फ़ंक्शन लागू किया गया" से अधिक कुछ नहीं है ।cnλs.λz.sszsnz

फ़ंक्शन की एक संभावित परिभाषा निम्नलिखित है: । शरीर को देखते हुए, मैं फ़ंक्शन के पीछे के तर्क को समझता हूं। हालांकि, जब मैं मूल्यांकन करना शुरू करता हूं, तो मैं फंस जाता हूं। मैं इसे एक उदाहरण से समझाऊंगा:timestimes=λm.λn.λs.m(ns)

(λm.λn.λs.m(ns))(λs.λz.ssz)(λs.λz.sssz)λs.(λs.λz.ssz)((λs.λz.sssz)s))λs.(λs.λz.ssz)(λz.sssz)λs.λz.(λz.sssz)(λz.sssz)z

अब इस स्थिति में, यदि मैं पहली बार लागू करता हूं, तो मुझे वांछित परिणाम मिलता है। हालाँकि, अगर मैं पहले आवेदन करता हूं, क्योंकि मुझे आवेदन करना चाहिए क्योंकि आवेदन बाईं ओर से सहयोगी है, मुझे मिलता है एक गलत परिणाम:(λz.sssz)z(λz.sssz)(λz.sssz)

λs.λz.(λz.sssz)(λz.sssz)zλs.λz.(sss(λz.sssz))z

मैं अब इसे कम नहीं कर सकता। मैं क्या गलत कर रहा हूं? परिणाम होना चाहिएλs.λz.ssssssz


आपके शुरुआती कार्यकाल में चर्च अंक सही नहीं हैं। 2 का प्रतिनिधित्व द्वारा किया जाता है , not । λs.λz.s(sz)λs.λz.ssz
उदय रेड्डी

जवाबों:


7

मुझे लगता है कि आपकी कमी सही है (मैं केवल इसे नेत्रगोलक हूं, हालांकि)। अंत में, आप आवेदन कर सकते हैं नहीं को , यह कभी अवधि में दिखाई देता है। is , not । लैम्ब्डा-कैलकुलस में कार्य एक ही तर्क लेते हैं; वे प्रभावी रूप से कर रहे हैं curried : एक दो तर्क समारोह एक एक तर्क समारोह है कि पहला तर्क लेता है और एक नया तर्क समारोह है कि दूसरा तर्क और रिटर्न परिणाम लेता रिटर्न के रूप में कार्यान्वित किया जाता है।(λz.sssz)zλz.ffzλz.(ff)zλz.f(fz)

चर्च के अंकों को परिभाषित करते समय आपने वही गलती की। लिए चर्च अंक एक समारोह बार रचना पर आधारित है । "फ़ंक्शन ने फ़ंक्शन लिए बार लागू किया है " । क्या आप ने लिखा समारोह है लागू कार्य करने के लिए बार और अंत में करने के लिए , जो मुझे एक उपयोगी शब्द के रूप में हड़ताल नहीं करता है।nnsnzλs.λz.s(s(sz)))sn1sz

2×3 इस प्रकार है । मैं आपको बताता हूँ कि यह को कम करता है ।(λmns.m(ns))(λsz.s(sz))(λsz.s(s(sz)))λsz.s(s(s(s(s(sz)))))


जहां तक ​​आपका पैराग्राफ है, आप सही हैं और मुझे इस बारे में पता था। इसने मुझे सिर्फ यह कहा कि सही सहकारिता को लागू करने से सही परिणाम मिले। जहाँ तक दूसरा पैराग्राफ है: आप सही हैं। कोई ब्रेसिज़ का उपयोग करना मेरे लिए गलत नहीं था, फिर से आवेदन की बाईं संगति के कारण। मैं अब फिर से पूरी बात को कम कर दूंगा और यह देखूंगा कि क्या मेरे ब्रेसिज़ की कमी ने मेरी गलती का कारण बना दिया!
कॉड

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