बॉटम टाइप
प्रकार सिद्धांत में, गणितीय तर्क के भीतर एक सिद्धांत, टाइप सिस्टम का निचला प्रकार वह प्रकार होता है जो अन्य सभी प्रकारों का उपप्रकार होता है।[1] जहां ऐसा प्रकार मौजूद है, इसे अक्सर अप टैक (⊥) प्रतीक के साथ दर्शाया जाता है।
जब निचला प्रकार खाली होता है, तो एक फ़ंक्शन जिसका रिटर्न प्रकार निचला होता है, कोई भी मान नहीं लौटा सकता, यहां तक कि इकाई प्रकार का अकेला मान भी नहीं। ऐसी भाषा में, निचले प्रकार को शून्य या कभी नहीं प्रकार के रूप में जाना जा सकता है। करी-हावर्ड पत्राचार में, एक खाली प्रकार मिथ्यात्व से मेल खाता है।
कंप्यूटर विज्ञान अनुप्रयोग
उपप्रकार प्रणालियों में, निचला प्रकार सभी प्रकारों का एक उपप्रकार होता है।[1]यह शीर्ष प्रकार का दोहरा प्रकार है, जो एक सिस्टम में सभी संभावित मानों को फैलाता है।
यदि एक प्रकार की प्रणाली प्रकार की सुरक्षा है, तो निचला प्रकार निर्जन है और निचले प्रकार का शब्द एक तार्किक विरोधाभास का प्रतिनिधित्व करता है। ऐसी प्रणालियों में, आम तौर पर निचले प्रकार और खाली प्रकार के बीच कोई अंतर नहीं किया जाता है, और शब्दों का उपयोग परस्पर किया जा सकता है।
यदि निचला प्रकार बसा हुआ है, तो इसकी शर्तें आमतौर पर अपरिभाषित व्यवहार, अनंत पुनरावृत्ति, या अप्राप्य त्रुटियों जैसी त्रुटि स्थितियों के अनुरूप होती हैं।
बॉटम के साथ बाउंडेड क्वांटिफिकेशन में,[1]पियर्स का कहना है कि बॉट के कई उपयोग हैं:
- अपवाद हैंडलिंग वाली भाषा में, raise निर्माण के लिए एक प्राकृतिक प्रकार raise ∈ exception --> Bot है, और इसी तरह अन्य नियंत्रण संरचनाओं के लिए भी। सहज रूप से, यहां बॉट उस प्रकार की गणना है जो कोई उत्तर नहीं देता है।
- बॉट बहुरूपी डेटा संरचनाओं के लीफ नोड्स को टाइप करने में उपयोगी है। उदाहरण के लिए, सूची (बॉट) शून्य के लिए एक अच्छा प्रकार है।
- जावा जैसी भाषाओं के नल पॉइंटर मान (एक सूचक जो किसी ऑब्जेक्ट को इंगित नहीं करता है) के लिए बॉट एक प्राकृतिक प्रकार है: जावा (प्रोग्रामिंग भाषा) में, नल प्रकार संदर्भ प्रकारों का सार्वभौमिक उपप्रकार है।
null
शून्य प्रकार का एकमात्र मान है; और इसे किसी भी संदर्भ प्रकार में डाला जा सकता है।[2] हालाँकि, जैसा कि ऊपर वर्णित है, शून्य प्रकार निचला प्रकार नहीं है, यह इसका उपप्रकार नहीं हैint
और अन्य आदिम प्रकार। - टॉप और बॉट दोनों सहित एक प्रकार की प्रणाली, प्रकार के अनुमान के लिए एक प्राकृतिक लक्ष्य प्रतीत होती है, जो एक छोड़े गए प्रकार के पैरामीटर पर बाधाओं को सीमाओं की एक जोड़ी द्वारा कैप्चर करने की अनुमति देती है: हम S<:X<:T का मान जानने के लिए लिखते हैं एक्स को एस और टी के बीच कहीं स्थित होना चाहिए। ऐसी योजना में, एक पूरी तरह से अप्रतिबंधित पैरामीटर नीचे बॉट से और ऊपर टॉप से घिरा होता है।
प्रोग्रामिंग भाषाओं में
आमतौर पर उपयोग की जाने वाली अधिकांश भाषाओं में निचले प्रकार को दर्शाने का कोई तरीका नहीं होता है। कुछ उल्लेखनीय अपवाद हैं।
हास्केल (प्रोग्रामिंग भाषा) में, undefined
ई> स्थिरांक या के साथ बनाए गए पद error
कंस्ट्रक्टर को किसी भी प्रकार का असाइन किया जा सकता है। ऐसी अभिव्यक्ति का मूल्यांकन करने का प्रयास करने से कोड अप्राप्य रूप से निरस्त हो जाता है।[3] ध्यान दें कि हास्केल खाली प्रकारों की भी अनुमति देता है: Data.Void
सामान्य लिस्प में प्रकार NIL
, इसमें कोई मान नहीं है और यह हर प्रकार का एक उपप्रकार है।[4] जिस प्रकार का नाम दिया गया है NIL
कभी-कभी नामित प्रकार के साथ भ्रमित हो जाता है NULL
, जिसका एक मान अर्थात प्रतीक है NIL
अपने आप।
स्काला (प्रोग्रामिंग भाषा) में, नीचे के प्रकार को इस प्रकार दर्शाया गया है Nothing
. ऐसे फ़ंक्शंस के लिए इसके उपयोग के अलावा जो केवल अपवाद फेंकते हैं या अन्यथा सामान्य रूप से वापस नहीं आते हैं, इसका उपयोग सहप्रसरण और विरोधाभास (कंप्यूटर विज्ञान) पैरामीट्रिक बहुरूपता # पैरामीट्रिक बहुरूपता के लिए भी किया जाता है। उदाहरण के लिए, स्काला की सूची एक सहसंयोजक प्रकार का कंस्ट्रक्टर है List[Nothing]
का एक उपप्रकार है List[A]
सभी प्रकार के लिए ए. तो स्काला के लिए Nil
, किसी भी प्रकार की सूची के अंत को चिह्नित करने के लिए वस्तु, प्रकार से संबंधित है List[Nothing]
.
रस्ट (प्रोग्रामिंग भाषा) में, निचले प्रकार को नेवर टाइप कहा जाता है और इसे द्वारा दर्शाया जाता है !
. यह उन कार्यों के प्रकार हस्ताक्षर में मौजूद है जो कभी वापस न लौटने की गारंटी देते हैं, उदाहरण के लिए कॉल करके panic!()
या हमेशा के लिए लूपिंग। यह कुछ नियंत्रण-प्रवाह कीवर्ड का भी प्रकार है, जैसे break
और return
, जो कोई मूल्य उत्पन्न नहीं करते लेकिन फिर भी अभिव्यक्ति के रूप में प्रयोग करने योग्य हैं।[5]
सीलोन (प्रोग्रामिंग भाषा) में, निचला प्रकार है Nothing
.[6] यह तुलनीय है Nothing
स्काला में और अन्य सभी प्रकारों के साथ-साथ एक खाली सेट के प्रतिच्छेदन का प्रतिनिधित्व करता है।
जूलिया (प्रोग्रामिंग भाषा) में, निचला प्रकार है Union{}
.[7]
टाइपप्रति में, निचला प्रकार है never
.[8][9]
Google क्लोजर टूल्स एनोटेशन के साथ जावास्क्रिप्ट में, निचला प्रकार है !Null
(शाब्दिक रूप से, इसका एक गैर-शून्य सदस्य Null
इकाई प्रकार)।
PHP में, निचला प्रकार है never
.
पायथन (प्रोग्रामिंग भाषा) में, निचला प्रकार है typing.NoReturn
(typing.Never
संस्करण 3.11 से)।[10][11]
कोटलिन (प्रोग्रामिंग भाषा) में, निचला प्रकार है Nothing
.[12]
डी (प्रोग्रामिंग भाषा) में, निचला प्रकार है noreturn
[13]
डार्ट (प्रोग्रामिंग भाषा) में, संस्करण 2.12 के बाद से ध्वनि शून्य सुरक्षा अद्यतन के साथ, Never
प्रकार को निचले प्रकार के रूप में पेश किया गया था। उससे पहले बॉटम टाइप हुआ करता था Null
.[14][15]
यह भी देखें
संदर्भ
- ↑ 1.0 1.1 1.2 Pierce, Benjamin C. (1997). "तल के साथ परिबद्ध परिमाणीकरण". Indiana University CSCI Technical Report (492): 1.
- ↑ "Section 4.1: The Kinds of Types and Values". जावा भाषा विशिष्टता (3rd ed.).
- ↑ "Chapter 3 Expressions". Haskell 2010 Language Report. Retrieved 25 October 2022.
- ↑ "शून्य टाइप करें". Common Lisp HyperSpec. Retrieved 25 October 2022.
- ↑ "Primitive Type never". The Rust Standard Library Documentation. Retrieved 2020-09-24.
- ↑ "Chapter 3. Type system — 3.2.5. The bottom type". The Ceylon Language. Red Hat, Inc. Retrieved 2017-02-19.
- ↑ "Essentials - The Julia Language", The Julia Programming Language Documentation, retrieved 2021-08-13
- ↑ The never type, TypeScript 2.0 release notes, Microsoft, 2016-10-06, retrieved 2019-11-01
- ↑ The never type, TypeScript 2.0 release notes, source code, Microsoft, 2016-10-06, retrieved 2019-11-01
- ↑ typing.NoReturn, typing — Support for type hints, Python documentation, Python Software Foundation, retrieved 2020-02-25
- ↑ "typing — Support for type hints — Python 3.12.0a0 documentation". docs.python.org. Retrieved 2022-07-04.
- ↑ Nothing, retrieved 2020-05-15
- ↑ "प्रकार - डी प्रोग्रामिंग भाषा". dlang.org. Retrieved 2022-10-20.
- ↑ Understanding null safety - top and bottom, retrieved 2022-04-13
- ↑ Understanding null safety - never for unreachable code, retrieved 2022-04-13