पंक्ति बहुरूपता और उपप्रकार के बीच प्रमुख अंतर क्या हैं


20

मैं अक्सर सुनता हूं कि पंक्ति-बहुरूपता उप-योग करने की तुलना में बेहतर दृष्टिकोण है, लेकिन मुझे विस्तार से उनकी तुलना करते हुए कुछ भी खोजने में कठिनाई होती है। मैं विशेष रूप से सिस्टम के एक उपयोगकर्ता के परिप्रेक्ष्य में रुचि रखता हूं।

मैं इस ब्लॉग पोस्ट पर आया था , लेकिन यह मुझे पहले से अधिक सवालों के साथ छोड़ देता है। उदाहरण के लिए, यह दावा करता है कि सबटाइपिंग वाला सिस्टम एक प्रकार का असाइन करेगा, जबकि पंक्ति टाइपिंग वाला सिस्टम दूसरे को असाइन करेगा; क्या इसका मतलब यह है कि अगर एक सिस्टम जिसे purportedly सबटाइपिंग है वह "row टाइपिंग" टाइप असाइन करता है, कि वह गलत तरीके से purports करता है?

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

जवाबों:


10

सबटाइपिंग का कहना है कि एक प्रकार की अभिव्यक्ति हम इसे दूसरे प्रकार भी दे सकते हैं। हम कहते हैं कि पूर्व उत्तरार्द्ध का उप-प्रकार है और यह उप-संबंध कई अन्य संबंधों को प्रेरित करता है। प्रतीकों में,

ΓE:SS<:TΓE:T

(α.τ)<:τ[T/α]T

{1:A,2:B}<:{2:B,1:A}{1:A,2:B}{2:B,1:A}STS<:TT<:S{1:A,2:B}={2:B,1:A}T<:T

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

()ऊपर, संरचनात्मक उप-प्रकार का मतलब है पंक्ति प्रकार लेकिन इसके विपरीत नहीं। पैरामीट्रिक पॉलीमॉर्फिज्म ऑर्थोगोनल है (इस अर्थ में कि आपके पास हो या न हो, निश्चित रूप से इंटरफेरेंस हैं) पंक्ति प्रकार या संरचनात्मक उपप्रकार के लिए। संरचनात्मक उपप्रकार + पैरामीट्रिक बहुरूपता वाली एक प्रणाली पंक्ति प्रकार + पैरामीट्रिक बहुरूपता (किसी प्रकार का "रिकॉर्ड यूनियन") इस अर्थ में लगाती है कि उत्तरार्द्ध में प्रत्येक शब्द पूर्व में एक ही प्रकार के साथ टाइप किया जा सकता है। पूर्व केवल अतिरिक्त प्रकारों के साथ ही टाइप करने में सक्षम है। ब्रायन के उदाहरण का उपयोग करते हुए, संरचनात्मक उपप्रकार और पैरामीट्रिक बहुरूपता के साथ एक प्रणाली answerमें पंक्ति टाइपिंग संस्करण के रूप में एक ही प्रकार होगा, लेकिन इसमें उप-संस्करण संस्करण का प्रकार भी होगा

ρ{ c : Number }जानकारी: एक उपप्रकार से सुपरपेप में जाने से (प्रकार) जानकारी खो जाती है। यह अक्सर वही हो सकता है जो आप चाहते हैं: एक सामान्य प्रकार है जिसके बारे में आप परवाह करते हैं और बाकी सब अप्रासंगिक विवरण हैं। मेरा पूर्वाग्रह यथासंभव अधिक से अधिक जानकारी बनाए रखने और केवल इसे स्पष्ट रूप से त्यागने की ओर है। उप-प्रकार के उप-प्रकार के डाउनडाइड को अक्सर उन प्रोग्रामों द्वारा निकाला जाता है जो टाइप सही होते हैं, लेकिन केवल इसलिए कि प्रकारों को एक (n सूचना रहित) "टॉप" प्रकार पर धकेल दिया गया था, जैसे खाली रिकॉर्ड। दोहराते हुए, पैरामीट्रिक बहुरूपता (सामान्य रूप में) प्रकार की जानकारी को संरक्षित करता है, जानबूझकर घटाता है।


विस्तृत प्रतिक्रिया के लिए धन्यवाद! एक और सवाल: यदि संरचनात्मक उप-योग + पैरामीट्रिक बहुरूपता पंक्ति टाइपिंग + पैरामीट्रिक बहुरूपता को कम करता है, तो आप कभी उत्तरार्द्ध का उपयोग क्यों करेंगे?
एलेक्स आर।

@AlexR जैसा कि ब्रायन ने अपने ब्लॉग पोस्ट में उल्लेख किया है, सबटाइपिंग टाइप इंट्रेंस और कई अन्य पहलुओं के साथ बहुत खराब तरीके से बातचीत करता है, जैसे कि एर्गोनोमिक मुद्दा मैंने उल्लेख किया था। कार्यान्वयन और भाषा जटिलता के मुद्दे भी हैं। निष्पक्ष होने के लिए "पंक्ति प्रकार" और उपप्रकार दोनों के लिए एक व्यापक डिज़ाइन स्थान है, इसलिए "सदस्यता" एक मोटा कथन है।
डेरेक एल्किंस ने SE
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.