बॉटम टाइप

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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