मैं जाँच कर रहा हूँ वहाँ टेम्पलेट Haskell के साथ कुछ वर्तमान अभ्यास नहीं है कि/कुछ लेंस fanciness की सरल मामले से निपटने के लिए:वर्तमान सबसे अच्छा अभ्यास के बारे में रिकॉर्ड वैश्विक नेमस्पेसिंग
data Person = Person {
name :: String,
...
}
data Company = Company {
name :: String,
...
}
वर्तमान में मैं कर रहा हूँ आयात को अर्हता प्राप्त करके वैश्विक नामस्थान प्रदूषण से परहेज करते हुए, लेकिन यह रिकॉर्ड-पहुंच को बेकार बना देता है।
import Person as P
isFred :: Person -> Bool
isFred p = (P.name p) == "Fred"
क्या रिकॉर्ड फ़ील्ड तक पहुंचने के लिए वास्तव में कोई बेहतर तरीका नहीं है?
मैं एक ही जमीन को कवर करने वाले किसी अन्य प्रश्न के उपयोगी लिंक के कारण @ एमानुअल टौज़री के उत्तर को स्वीकार कर रहा हूं। दूसरा प्रश्न "हैकेल नेमस्पेस" पर एक खोज के लिए प्रदर्शित नहीं होता है। अन्य उत्तरों के साथ कुछ भी गलत नहीं है, लेकिन मैं केवल एक को स्वीकार कर सकता हूं।
उल्लिखित समाधान में टेम्पलेट हास्केल, लेंस, टाइप-क्लासेस और अधिक का उपयोग मूल रूप से एक फ़ील्ड "नाम" के साथ प्रत्येक क्षेत्र "हैसनाम" के लिए एक टाइपक्लास बनाने के लिए किया जाता है। प्रत्येक डेटा-प्रकार तब उस वर्ग का एक उदाहरण है जिसका कार्यान्वयन होता है। फिर कुछ जादू है जो मैं पूरी तरह से अलग-अलग प्रकारों को शामिल करने की इजाजत नहीं देता हूं।
किसी भी हास्केल न्यूबीज के लिए यह सोचने के लिए कि यह सब कुछ क्या है, ऐसा इसलिए है क्योंकि रिकॉर्ड्स मूल रूप से उस टुपल के दूसरे तत्व को चुनने के लिए सामान्य कार्यों के रूप में कार्यान्वित क्षेत्र-चयनकर्ताओं के साथ tuples हैं। यदि आप इन फील्ड-चयनकर्ता कार्यों को निर्यात करते हैं तो वे वैश्विक नामस्थान में बैठते हैं और जल्दी या बाद में (आमतौर पर जल्द ही) आपको एक संघर्ष मिलता है।
तो - आप या तो आयात (जैसे मेरे उपरोक्त उदाहरण में) अर्हता प्राप्त करते हैं या उन नामों के साथ आने का प्रयास करते हैं जो संघर्ष नहीं करते हैं (नाम का उपसर्ग और सर्वश्रेष्ठ के लिए आशा)।
लेंस सामान 2013 के रूप में सभी क्रोध है और फील्ड चयनकर्ताओं/गेटर्स + सेटर्स इत्यादि की संरचना की इजाजत देता है। लेंस का मूल विचार बहुत जटिल नहीं है लेकिन कार्यान्वयन मेरे सिर पर सही है।
रिकॉर्ड के लिए (हा!) मुझे लगता है कि अन्य पोस्ट में समाधान शायद मैं क्या कर रहा हूँ के बाद है, लेकिन यह एक बड़ी (5 एक्सटेंशन सिर्फ नकली रिकॉर्ड नेमस्पेसिंग करने के लिए) जादू की राशि को शामिल करता है।
इनमें से कोई भी वास्तव में इस मुद्दे को संबोधित नहीं करता है। यह उपसर्ग के विभिन्न प्रकार हैं। यह ओओ में कोई समस्या नहीं है क्योंकि विधियों/विशेषताओं का नामस्थान वर्ग/वस्तु तक सीमित है - यह आमतौर पर केवल क्लास नेमस्पेस है जो वैश्विक है। वैसे भी धन्यवाद - आखिरी चर्चा जो मुझे मिल सकती थी वह लगभग 18 महीने पुरानी थी। –
बेहतर रिकॉर्ड सिस्टम को लागू करने के बारे में वार्ता हमेशा की तरह रही है। सुझाए गए समाधान के दर्जनों हैं। यहां तक कि [हास्केल बोलियां भी हैं, जो इस मुद्दे को हल करती हैं] (http://en.wikipedia.org/wiki/Frege_ (प्रोग्रामिंग_भाषा) # रिकॉर्ड)। दुर्भाग्यवश हमें उन लोगों में से किसी के लिए इंतजार करना होगा। –
हाँ - मैंने कुछ पुराने (मेरे सिर पर) चर्चाओं के माध्यम से उलझाया है। यह उन मामलों में से एक का अनुभव है जहां हम 90% समाधान साल पहले होने के बजाय अब से दस साल के 100% समाधान पर इंतजार करेंगे। –