बॉटम टाइप

टाइप सिद्धांत में, गणितीय तर्क के भीतर एक सिद्धांत, टाइप सिस्टम का बॉटम टाइप वह प्रकार होता है जो अन्य सभी प्रकारों का सबटाइप होता है।

जहां ऐसा प्रकार निहित है, इसे प्रायः अप टैक (⊥) प्रतीक के साथ दर्शाया जाता है।

जब बॉटम टाइप एम्प्टी होता है, तो एक फ़ंक्शन जिसका रिटर्न टाइप बॉटम होता है, जो कोई भी मान रिटर्न नहीं कर सकता, यहां तक ​​कि यूनिट टाइप का अकेला मान भी नहीं कर सकता। ऐसी लैंग्वेज में, बॉटम टाइप को शून्य या नैवर टाइप के रूप में जाना जा सकता है। करी-हावर्ड पत्राचार में, एक एम्प्टी टाइप असत्यता से मेल खाता है।

कंप्यूटर विज्ञान अनुप्रयोग
सबटाइपिंग सिस्टम्स में, बॉटम टाइप सभी प्रकारों का एक सबटाइप होता है। यह टॉप टाइप का दोहरा प्रकार है, जो एक सिस्टम में सभी संभावित मानों का विस्तार करता है।

यदि एक टाइप सिस्टम सुदृढ़ है, तो बॉटम टाइप अवासित है और बॉटम टाइप शब्द एक तार्किक विरोधाभास का प्रतिनिधित्व करता है। ऐसी प्रणालियों में, प्रायः बॉटम टाइप और एम्प्टी टाइप के बीच कोई अंतर नहीं किया जाता है, और शब्दों का उपयोग परस्पर किया जा सकता है।

यदि बॉटम टाइप आवासित है, तो इसकी स्थिति प्रायः अपरिभाषित व्यवहार, अनंत पुनरावृत्ति, या अप्राप्य त्रुटियों जैसी त्रुटि स्थितियों के अनुरूप होती हैं।

बॉटम के साथ परिबद्ध परिमाणन में, पियर्स का कहना है कि "बॉट" के कई उपयोग हैं:


 * 1) एक लैंग्वेज जिसमें एक्सेप्शन हैं, रेज निर्माण के लिए एक प्राकृतिक प्रकार रेज ∈ एक्सेप्शन--> बॉट है, और इसी तरह अन्य नियंत्रण स्ट्रक्चर्स के लिए भी है। सहज रूप से, यहां बॉट उस प्रकार की गणना है जो कोई उत्तर रिटर्न नहीं देता है।
 * 2) बॉट पॉलीमॉर्फिक डेटा संरचनाओं के "लीफ नोड्स" टाइप करने में उपयोगी है। उदाहरण के लिए, लिस्ट (बॉट)  के लिए एक अच्छा प्रकार है।
 * 3) जावा जैसी लैंग्वेजेज के "नल पॉइंटर" मान (एक पॉइंटर जो किसी ऑब्जेक्ट को इंगित नहीं करता है) के लिए बॉट एक प्राकृतिक प्रकार है: जावा में, नल प्रकार संदर्भ प्रकारों का सार्वभौमिक सबटाइप है। नल नल टाइप का एकमात्र मान है; और इसे किसी भी संदर्भ प्रकार में डाला जा सकता है। हालाँकि, जैसा कि ऊपर वर्णित है, नल टाइप एक बॉटम टाइप नहीं है, यह इसका सबटाइप नहीं है   और अन्य अभाज्य प्रकारों का सबटाइप नहीं है।
 * 4) टॉप और बॉट दोनों सहित एक प्रकार की सिस्टम प्रकार के अनुमान के लिए एक स्वाभाविक लक्ष्य प्रतीत होती है, जो विलोपित प्रकार के पैरामीटर पर बाधाओं को सीमाओं की एक जोड़ी द्वारा अधिकृत करने की अनुमति देती है: हम S<:X<:T लिखते हैं जिसका अर्थ है "X का मान S और T के बीच कहीं होना चाहिए।" ऐसी योजना में, एक पूरी तरह से अप्रतिबंधित पैरामीटर नीचे बॉट द्वारा और ऊपर टॉप द्वारा सीमित किया जाता है।

प्रोग्रामिंग लैंग्वेजेज में
प्रायः उपयोग की जाने वाली अधिकांश लैंग्वेजेज में बॉटम टाइप को दर्शाने का कोई तरीका नहीं होता है। कुछ उल्लेखनीय अपवाद हैं।

हास्केल में, कंस्ट्रक्टर के साथ बनाए गए स्थिरांक या शब्दों को किसी भी प्रकार का निर्दिष्ट किया जा सकता है। ऐसी एक्सप्रेशन का मूल्यांकन करने का प्रयास करने से कोड अप्राप्य रूप से निरस्त हो जाता है। ध्यान दें कि हास्केल एम्प्टी टाइपों की भी अनुमति देता है: डाटा .वोइड।

कॉमन लिस्प में प्रकार में कोई मान नहीं है, और यह हर प्रकार का एक सबटाइप है।  नामक प्रकार के साथ भ्रमित हो जाता है, जिसका एक ही मान होता है, अर्थात प्रतीक है ।

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

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

सीलोन में, बॉटम टाइप  है। यह स्काला में के बराबर है और अन्य सभी प्रकारों के साथ-साथ एक खाली सेट के प्रतिच्छेदन का प्रतिनिधित्व करता है।

जूलिया में, बॉटम टाइप है।

टाइपस्क्रिप्ट में, बॉटम टाइप है।

क्लोजर टूल्स एनोटेशन के साथ जावास्क्रिप्ट में, बॉटम टाइप (शाब्दिक रूप से, इसका  इकाई प्रकार एक गैर-शून्य सदस्य) है।

PHP में, बॉटम टाइप है।

पायथन में, बॉटम टाइप ( संस्करण 3.11 से) है।

कोटलिन में, बॉटम टाइप है।

डी में, बॉटम टाइप है

डार्ट में, ध्वनि शून्य सुरक्षा अपडेट संस्करण 2.12 के बाद से, के साथ,  प्रकार को बॉटम टाइप के रूप में प्रस्तुत किया गया था। उससे पहले बॉटम टाइप हुआ करता था।

यह भी देखें

 * विरोधाभास
 * फेल-स्टॉप
 * एनएएन
 * शीर्ष प्रकार
 * इकाई प्रकार