2012-08-22 17 views
30

HList package अब प्राचीन हास्केल तकनीक पर आधारित था। सरल सवाल यह है कि: पिछले 8 वर्षों के हास्केल/जीएचसी विकास के सभी अद्भुत नई विशेषताओं को देखते हुए, क्या एक "आधुनिक" एचएलआईस्ट बहुत अलग तरीके से बनाया जाएगा? मुझे एहसास है कि यहां का जवाब कोई हो सकता है, कि एचएलिस्ट के विशेष मामले के लिए, तब भी तकनीक का उपयोग सबसे सुरुचिपूर्ण समाधान पैदा करता है।"आधुनिक" एचएलआईस्ट?

मैंने extensible records पृष्ठ पर प्रलेखित कई आइटम पढ़े हैं, केवल वास्तविक प्रतिद्वंद्वी (यानी हैक पर उपलब्ध लाइब्रेरी के रूप में लागू किया गया है) records package है। या extensible records से लिंक गुम हैं?

उत्तर

11

इनमें से किसी भी पैकेज के लिए प्रश्न अपने लक्ष्यों का दायरा है। एचएलआईस्ट वास्तव में लेबल के 5 अलग-अलग कार्यान्वयन, दो प्रकार की समानता, दो प्रकार के कास्टिंग, दो रिकॉर्ड/रिकॉर्डपी, और वेरिएंट बनाम टीआईसी पसंद है। सभी समान लेकिन उपयोग, पोर्टेबिलिटी और एक्सटेंशन के उपयोग के आसानी के विभिन्न व्यापार-बंद हैं।

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

"रिकॉर्ड" पैकेज आप लिंक "प्रकार" पैकेज का दावा है कि पर निर्भर करता है:।

"हास्केल subkinds और subkind बहुरूपता के लिए कोई समर्थन नहीं है हालांकि, इस पैकेज subkinds अनुकरण करने के लिए इस्तेमाल किया जा सकता दयालु * और सबकिंड चर। "

लेकिन यह अब नए जीएचसी संस्करणों में डेटा प्रकार के प्रचार को बढ़ावा देने के लिए सच नहीं है। तो यह जनवरी 2012 पैकेज अब अप्रचलित हो सकता है।

रिकॉर्ड के लिए, शायद एक नई प्रणाली पॉलिमॉर्फिक लेंस के नवीनतम दौर से खींची जाएगी: lens और/या lens-family

+2

मैं आज सुबह रसेल (ओ'कोनर) के साथ लेंस और एक्स्टेंसिबल रिकॉर्ड के बीच संबंधों पर चर्चा कर रहा था - और यह स्पष्ट नहीं है। लेंस एक समग्र क्षेत्र में एक ही क्षेत्र के प्राप्त/सेट को सारणित करने के लिए बहुत अच्छे हैं, लेकिन समग्र रूप से प्रतिनिधित्व करने में कम अच्छा है। किसी भी मामले में, ऐसा लगता है कि मुझे एचएलिस्ट (अब के लिए) के साथ रहना चाहिए, और फिर यह पता लगाने की कोशिश करें कि किस प्रकार के संस्करणों को मुझे समस्या से निपटने के लिए चुनना चाहिए (जो कुछ ओ'कैमल कोड का अनुवाद कर रहा है जो पॉलिमॉर्फिक का उपयोग करता है Haskell में वेरिएंट और पंक्ति प्रकार और Functors)। –

+2

मैंने हाल ही में एक एचएलआईस्ट-प्रेरित चीज बनाई है: एक प्रकार-अनुक्रमित-प्रोडक्ट (टीआईपी) चीज़ और {मामलों में से किसी एक के लिए हैंडलर} दिया जाता है, यह या तो {हैंडलर का परिणाम} या {छोटे प्रकार के साथ टीआईपी} देता है} । चेनिंग हैंडलर के साथ> => मामले के अनुसार टीआईपी मामले को कम कर दिया। मैंने सोचा था कि उस समय सिम्युलेटेड पैटर्न मिलान पॉलीमोर्फिक वेरिएंट। –

संबंधित मुद्दे