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

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

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

अब  ऑपरेटिंग सिस्टम-स्तरीय सिस्टम कॉल का उपयोग करके फ़ाइल से अगली पंक्ति को पढ़ता है जिसमें फ़ाइल में वर्तमान स्थिति को बदलने का साइड इफेक्ट (कंप्यूटर विज्ञान) होता है। लेकिन यह संदर्भात्मक पारदर्शिता का उल्लंघन करता है क्योंकि इसे एक ही तर्क के साथ कई बार कॉल करने पर हर बार अलग-अलग परिणाम मिलेंगे क्योंकि फ़ाइल में वर्तमान स्थिति स्थानांतरित हो जाती है। यह बदले में बनाता है   संदर्भात्मक पारदर्शिता का उल्लंघन करें क्योंकि यह कॉल करता है.

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

प्रोग्रामिंग भाषाएँ
विशिष्टता प्रकार कार्यात्मक प्रोग्रामिंग भाषाओं जैसे क्लीन (प्रोग्रामिंग भाषा), मर्करी (प्रोग्रामिंग भाषा), एसएसी_प्रोग्रामिंग_भाषा और इदरीस (प्रोग्रामिंग_भाषा) में लागू किए जाते हैं। इन्हें कभी-कभी कार्यात्मक प्रोग्रामिंग में मोनाड्स के बदले कार्यात्मक भाषाओं में I/O संचालन करने के लिए उपयोग किया जाता है।

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

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

यह भी देखें

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

बाहरी संबंध

 * Bibliography on Linear Logic
 * Uniqueness Typing Simplified