5

कुछ समय पहले हास्केल एक्सटेंशन में से एक में (लिंक नहीं मिल सकता), और recently in Ur मुझे पता चला है कि नाम (उदाहरण के लिए, रिकॉर्ड फ़ील्ड) एक प्रकार का बना है। क्या कोई समझा सकता है कि टाइप अबास्ट्रक्शन उनके लिए पर्याप्त क्यों नहीं है?क्यों नाम एक प्रकार का बनाते हैं न कि सिर्फ एक प्रकार?

उत्तर

7

उत्तर सरल है: क्योंकि वे प्रकारों में दिखाई दे सकते हैं। नतीजतन, उन्हें प्रकार के स्तर पर रहना होगा (अन्यथा आपको निर्भर प्रकारों की आवश्यकता होगी)। और क्योंकि वे प्रकार के स्तर पर रहते हैं, वे एक तरह से वर्गीकृत होते हैं।

+0

प्रबुद्ध है इस उत्तर ने मेरे सिर में सबकुछ रखा है। धन्यवाद! – Fixpoint

7

रिकॉर्ड सिस्टम मूल्यों, प्रकारों और (शायद) प्रकारों के लिए नियम परिभाषित करते हैं। किस नियम का उपयोग किया जाता है, उस प्रकार की प्रणाली पर निर्भर करता है जिस पर डिजाइन किया जा रहा है, और डिजाइनर क्या हासिल करना चाहता है।

उदा। हास्केल में, रिकॉर्ड लेबल हैं:

  • मूल्यों (एक्सेसर कार्यों)
  • उन मूल्यों है प्रकार (जैसे Record -> Int)
  • उन प्रकार के प्रकार (*)

अन्य रिकॉर्ड सिस्टम कर सकते है विभिन्न उद्देश्यों के लिए प्रकार या प्रकार प्रणाली का उपयोग करें।

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

हास्केल में प्रकार प्रणाली का उपयोग करने का एक उदाहरण "अनबॉक्स किए गए प्रकार" का उपयोग है। ये है कि प्रकार हैं:

    नियमित मूल्यों के
  • अलग क्रम अभ्यावेदन
  • अलग बंधन रूपों (जैसे ढेर पर आवंटित नहीं किया जा सकता)

नियमित के साथ में मिश्रण से अनबॉक्स्ड प्रकार रखने के लिए प्रकार, उन्हें एक अलग दया दिया जाता है, जो संकलक को उनके अलगाव को ट्रैक करने की अनुमति देता है।

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

+0

धन्यवाद, अनबॉक्स किए गए प्रकारों के बारे में उदाहरण – Fixpoint