जैसा कि वे नेट 3.5 में हैं। मुझे पता है कि वे 4.0 में हैं, जैसा कि डीएलआर काम करता है, लेकिन मुझे अब हमारे संस्करण में रूचि है।क्या LINQ अभिव्यक्ति पेड़ ट्यूरिंग पूर्ण हैं?
उत्तर
LINQ अभिव्यक्ति पेड़ सामान्य सी # अभिव्यक्ति में रखे गए किसी भी चीज का प्रतिनिधित्व कर सकते हैं। इस प्रकार, वे सीधे while
छोरों, for
छोरों, आदि
हालांकि, यह लैम्ब्डा अभिव्यक्ति और प्रत्यावर्तन उपयोग करने के लिए किसी भी यात्रा आप की आवश्यकता हो सकती बाहर ले जाने के सैद्धांतिक रूप से संभव है प्रतिनिधित्व करने के लिए इस्तेमाल नहीं किया जा सकता है। अभ्यास में Enumerable
विधियों को अपने पेड़ में छोड़ना आसान हो सकता है।
पेड़ को निष्पादित करने वाली चीज़ को परिभाषित किए बिना, हम नहीं जानते। सीएलआर की अपनी व्याख्या में (जब आप उन्हें प्रतिनिधियों में संकलित करते हैं) वे हैं। लेकिन यदि आप उन्हें एसक्यूएल में अनुवाद करते हैं, तो वे नहीं हैं, और आप अपनी पसंद की किसी भी संपत्ति के साथ अपनी भ्रमित व्याख्या का आविष्कार कर सकते हैं।
जब तक कि आपने तय नहीं किया है कि उन्हें कैसे समझें, वे केवल डेटा संरचनाएं हैं।
ठीक है, आप इसे साबित करने की कोशिश क्यों नहीं करते? मुझे यकीन है कि यह एक मजेदार चुनौती है;)
लेकिन अभिव्यक्ति पेड़ केवल एक अभिव्यक्ति का प्रतिनिधित्व करते हैं और इस तरह आपको इसे परिभाषित करना होगा कि आपको क्या करना है, जैसा कि ईरविकियर ने कहा था।
यदि आप अभिव्यक्ति पेड़ों को रिकर्सन का उपयोग करने की अनुमति देते हैं तो आप लूप और ऐसे के लिए पुनरावृत्ति प्राप्त कर सकते हैं।
हालांकि, untyped lambda कैलकुलेशन ट्यूरिंग-पूर्ण Turing_completeness # उदाहरण हैं, लेकिन लैम्ब्डा कैलकुलेशन प्रति लैम्बडा_calculus प्रति रिकर्सन की अनुमति नहीं देता है # रिकर्सन यह सब बहुत पागल है।
मैं निष्कर्ष निकालूंगा कि अभिव्यक्ति शायद पूर्ण हो रही है लेकिन इसे किसी ऐसे व्यक्ति की आवश्यकता होगी जो इसकी पुष्टि करने के लिए अधिक परिचित है।
आपको पेड़ों को रिकर्सन का उपयोग करने की अनुमति नहीं है - वे पहले से ही हो सकते हैं: http://blogs.msdn.com/madst/archive/2007/05/11/recursive-lambda-expressions.aspx –
सी # 3.0 कल्पना अभिव्यक्ति पेड़ों पर खंड के मार्जिन कि कहा में एक टिप्पणी थी के प्रारंभिक मसौदे में:
मैं ट्यूरिंग-पूर्णता की सही मायने में अद्भुत सबूत जो इस मार्जिन भी है शामिल करने के लिए संकीर्ण।
अफसोस की बात है कि कोई भी यह जानने में सक्षम नहीं है कि इसे किसने लिखा है या सबूत विकसित किया है।
हाहाहा। .. मुझे आश्चर्य है कि अगर कोई और इसे प्राप्त करेगा। – TraumaPony
लॉल - बहुत अच्छा। –
थूक के पास ... अच्छा एक। :) –
- 1. क्या LINQ अभिव्यक्ति पेड़ उचित पेड़ हैं?
- 2. क्या सी ++ प्रीप्रोसेसर मेटाप्रोग्रामिंग ट्यूरिंग-पूर्ण है?
- 3. जावा अभिव्यक्ति पेड़
- 4. अभिव्यक्ति पेड़
- 5. गहराई में एक अभिव्यक्ति पेड़
- 6. उन भाषाओं की तलाश में जो ट्यूरिंग पूर्ण नहीं हैं
- 7. कन्वर्ट अभिव्यक्ति पेड़
- 8. अभिव्यक्ति पेड़ प्रतिबिंब से सुरक्षित क्यों हैं?
- 9. क्या मेरा प्रोग्राम ट्यूरिंग-पूरा है?
- 10. ट्यूरिंग पूर्ण अल्फान्यूमेरिक x86 निर्देश सेट (सब्सक्राइब)
- 11. गैर-ट्यूरिंग-पूर्ण भाषाओं में हेलिंग
- 12. एक LINQ अभिव्यक्ति पेड़ का निर्माण: कैसे गुंजाइश
- 13. संकलित अभिव्यक्ति पेड़ गलतफहमी?
- 14. यूनिट टेस्टिंग अभिव्यक्ति पेड़
- 15. अभिव्यक्ति/वक्तव्य पेड़
- 16. क्या इस तरह के कार्यक्रम हर ट्यूरिंग-पूर्ण भाषा में मौजूद हो सकते हैं?
- 17. Parameterized Linq अभिव्यक्ति सहायता
- 18. सरल Linq अभिव्यक्ति
- 19. कुछ उदाहरण हैं जिनमें अभिव्यक्ति पेड़ उपयोगी होते हैं क्या हैं?
- 20. कोड उद्धरण और अभिव्यक्ति पेड़
- 21. LINQ एक दुकान अभिव्यक्ति
- 22. स्थानीय चर और अभिव्यक्ति पेड़
- 23. .NET - पुस्तकालयों में अभिव्यक्ति पेड़?
- 24. LINQ
- 25. LINQ अभिव्यक्ति द्वारा
- 26. Linq नेस्टेड सूची अभिव्यक्ति
- 27. गतिशील LINQ अभिव्यक्ति
- 28. क्या सी 99 प्रीप्रोसेसर ट्यूरिंग पूरा है?
- 29. बी +/-पेड़ पर टी-पेड़ के क्या फायदे हैं?
- 30. कॉल-दर-मूल्य मूल्यांकन रणनीति क्यों ट्यूरिंग पूर्ण नहीं है?
LINQ अभिव्यक्ति पेड़ रिकर्सन का समर्थन नहीं करते हैं, इसलिए आपका एकमात्र विकल्प मुक्केबाजी और वाई-संयोजक का सहारा लेना प्रतीत होता है, जो बहुत धीमा होगा (फ़ंक्शन कॉल आवंटन)। –