विशिष्टता प्रकार

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

परिचय
विशिष्टता टाइपिंग को एक उदाहरण का उपयोग करके सबसे अच्छी तरह समझाया गया है। फ़ंक्शन पर विचार करें जो किसी दी गई फ़ाइल से टेक्स्ट की अगली पंक्ति पढ़ता है: अब  ओएस-स्तरीय सिस्टम कॉल का उपयोग करके फ़ाइल से अगली लाइन को पढ़ता है जिसका फ़ाइल में वर्तमान स्थिति को बदलने का दुष्प्रभाव होता है। लेकिन यह संदर्भात्मक पारदर्शिता का उल्लंघन करता है क्योंकि इसे एक ही तर्क के साथ कई बार कॉल करने पर हर बार अलग-अलग परिणाम मिलेंगे क्योंकि फ़ाइल में वर्तमान स्थिति बदल जाएगी। इसके परिणामस्वरूप  संदर्भात्मक पारदर्शिता का उल्लंघन करती है क्योंकि यह  को कॉल करती है।

हालाँकि, विशिष्टता टाइपिंग का उपयोग करके, हम का एक नया संस्करण बना सकते हैं जो संदर्भात्मक रूप से पारदर्शी है, भले ही यह ऐसे फ़ंक्शन के शीर्ष पर बनाया गया हो जो संदर्भित रूप से पारदर्शी नहीं है: विशिष्ट घोषणा निर्दिष्ट करती है कि f का प्रकार अद्वितीय है; कहने का तात्पर्य यह है कि,   रिटर्न के बाद   के कॉलर द्वारा   को दोबारा कभी संदर्भित नहीं किया जा सकता है, और यह प्रतिबंध प्रकार प्रणाली द्वारा प्रयुक्त किया जाता है। और चूँकि   स्वयं   नहीं लौटाता है, बल्कि एक नई, अलग फ़ाइल ऑब्जेक्ट को अलग करता है, इसका तात्पर्य यह है कि  को   के साथ तर्क के रूप में फिर से कॉल करना असंभव है, इस प्रकार साइड इफेक्ट होने की अनुमति देते हुए संदर्भात्मक पारदर्शिता को संरक्षित किया जाता है।

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

स्काला प्रोग्रामिंग लैंग्वेज के लिए कंपाइलर एक्सटेंशन विकसित किया गया है जो निर्वाहकों के बीच संदेश पारित करने के संदर्भ में विशिष्टता को संभालने के लिए एनोटेशन का उपयोग करता है।

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

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

यह भी देखें

 * रैखिक प्रकार
 * रैखिक तर्क

बाहरी संबंध

 * Bibliography on Linear Logic
 * Uniqueness Typing Simplified