क्लीजुर बनाम स्काला में पैटर्न मिलान


12

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

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

* नोट: इस सवाल को पूछने के लिए मैं जिस कारण से प्रेरित था, वह एक ब्लॉग पोस्ट के कारण है, जिसमें मैंने देखा कि एक प्रोग्रामर, एक प्रयोग के रूप में, स्काला और क्लीजुर दोनों का उपयोग करके एक लिस्प दुभाषिया का निर्माण किया। उन्होंने कहा कि क्लोजर मैच एक निश्चित लंबाई के बाद टूट गया, लेकिन यह क्यों नहीं समझा सकता, लेकिन मैं वास्तव में जानने के लिए उत्सुक हूं। आप इस पोस्ट को यहां पा सकते हैं: http://www.janvsmachine.net/2013/09/09/writing-simple-lisp-interpreter-in-clojure.html


3
@gnat ब्लॉग पोस्ट वास्तव में आकस्मिक लगती है। मुझे लगता है कि वह वास्तव में प्रति ब्लॉग के स्पष्टीकरण के बारे में परवाह नहीं करता है, बस एक विशेष भाषा की विशेषता दो विशिष्ट भाषाओं में भिन्न कैसे होती है। क्या यह उद्देश्यपूर्ण जवाबदेह नहीं है?
डोभाल

3
इस प्रश्न के बचाव में: यह वस्तुनिष्ठ, लिखित और स्पष्ट है। यह क्यों महत्वपूर्ण है कि ओपी इस प्रश्न को पोस्ट करने से पहले एक ब्लॉग पढ़ता है? यह प्रश्न की गुणवत्ता को नहीं बदलता है।

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

1
माना। गोरिल्ला बनाम शार्क दो चीजों की तुलना करने के बारे में है जो अतुलनीय हैं, जैसे सेब और संतरे। दो भाषाओं में एक विशेषता के कार्यान्वयन की तुलना गोरिल्ला बनाम शार्क नहीं है। यह विशिष्ट है, यह प्रासंगिक है, और जिस तरह के सवाल में विशेषज्ञ रुचि रखते हैं। यह सिर्फ "मुझे भाषा चुनने में मदद" सवाल नहीं है।
कार्ल बेलेफेल्ट

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

जवाबों:


21

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

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

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


मेरे सवाल का बहुत ही दिलचस्प जवाब देने के लिए धन्यवाद। मैंने कभी इस तरह से बहु-तरीकों के बारे में नहीं सोचा था! ऐसा लगता है कि यह सरल कार्यों के लिए ओवरकिल होगा, लेकिन निश्चित रूप से शक्तिशाली होगा। आपने मुहावरे के बारे में जो कहा, उससे मैं भी सहमत हूं। मैं इंतजार नहीं कर सकता कि
क्लोजर

इस उत्तर के लिए धन्यवाद। लिंक किए गए वीडियो में पैटर्न के मिलान का उल्लेख है जब रिच कहता है "यदि आपके पास पैटर्न मिलान ईर्ष्या है, तो इसका आधा हिस्सा है, उस हिस्से को छोड़कर, जो मुझे पसंद नहीं है, जो सशर्त हिस्सा है।" github.com/matthiasn/talk-transcripts/pull/90/files#
hawkeye
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.