बॉटम टाइप: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Universal subtype in logic and computer science}} प्रकार सिद्धांत में, गणितीय तर्क के...")
 
No edit summary
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Universal subtype in logic and computer science}}
{{Short description|Universal subtype in logic and computer science}}
[[ प्रकार सिद्धांत ]] में, [[गणितीय तर्क]] के भीतर एक सिद्धांत, टाइप सिस्टम का निचला प्रकार वह प्रकार होता है जो अन्य सभी प्रकारों का [[उपप्रकार]] होता है।<ref name="bounded">{{cite journal | last = Pierce | first = Benjamin C. | year = 1997 | title = तल के साथ परिबद्ध परिमाणीकरण| journal = Indiana University CSCI Technical Report |issue= 492 |url=http://www.cis.upenn.edu/~bcpierce/papers/bqb.ps |pages=1 }}</ref>
[[ प्रकार सिद्धांत |टाइप सिद्धांत]] में, [[गणितीय तर्क]] के भीतर एक सिद्धांत, टाइप सिस्टम का '''बॉटम टाइप''' वह प्रकार होता है जो अन्य सभी प्रकारों का [[उपप्रकार|सबटाइप]] होता है।<ref name="bounded">{{cite journal | last = Pierce | first = Benjamin C. | year = 1997 | title = तल के साथ परिबद्ध परिमाणीकरण| journal = Indiana University CSCI Technical Report |issue= 492 |url=http://www.cis.upenn.edu/~bcpierce/papers/bqb.ps |pages=1 }}</ref>
जहां ऐसा प्रकार मौजूद है, इसे अक्सर अप टैक (⊥) प्रतीक के साथ दर्शाया जाता है।


जब निचला प्रकार खाली होता है, तो एक फ़ंक्शन जिसका रिटर्न प्रकार निचला होता है, कोई भी मान नहीं लौटा सकता, यहां तक ​​कि [[इकाई प्रकार]] का अकेला मान भी नहीं। ऐसी भाषा में, निचले प्रकार को शून्य या कभी नहीं प्रकार के रूप में जाना जा सकता है। करी-हावर्ड पत्राचार में, एक खाली प्रकार मिथ्यात्व से मेल खाता है।
जहां ऐसा प्रकार निहित है, इसे प्रायः अप टैक (⊥) प्रतीक के साथ दर्शाया जाता है।
 
जब बॉटम टाइप एम्प्टी होता है, तो एक फ़ंक्शन जिसका रिटर्न टाइप बॉटम होता है, जो कोई भी मान रिटर्न नहीं कर सकता, यहां तक ​​कि [[इकाई प्रकार|यूनिट टाइप]] का अकेला मान भी नहीं कर सकता। ऐसी लैंग्वेज में, बॉटम टाइप को '''शून्य''' या '''नैवर टाइप''' के रूप में जाना जा सकता है। करी-हावर्ड पत्राचार में, एक एम्प्टी टाइप असत्यता से मेल खाता है।


==कंप्यूटर विज्ञान अनुप्रयोग==
==कंप्यूटर विज्ञान अनुप्रयोग==


उपप्रकार प्रणालियों में, निचला प्रकार सभी प्रकारों का एक उपप्रकार होता है।<ref name="bounded"/>यह [[शीर्ष प्रकार]] का दोहरा प्रकार है, जो एक सिस्टम में सभी संभावित मानों को फैलाता है।
सबटाइपिंग सिस्टम्स में, बॉटम टाइप सभी प्रकारों का एक सबटाइप होता है।<ref name="bounded"/> यह [[शीर्ष प्रकार|टॉप टाइप]] का दोहरा प्रकार है, जो एक सिस्टम में सभी संभावित मानों का विस्तार करता है।


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


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


बॉटम के साथ बाउंडेड क्वांटिफिकेशन में,<ref name="bounded" />पियर्स का कहना है कि बॉट के कई उपयोग हैं:
''बॉटम के साथ परिबद्ध परिमाणन'' में,<ref name="bounded" />पियर्स का कहना है कि "बॉट" के कई उपयोग हैं:


# अपवाद हैंडलिंग वाली भाषा में, raise निर्माण के लिए एक प्राकृतिक प्रकार raise ∈ exception --> Bot है, और इसी तरह अन्य नियंत्रण संरचनाओं के लिए भी। सहज रूप से, यहां बॉट उस प्रकार की गणना है जो कोई उत्तर नहीं देता है।
# एक लैंग्वेज जिसमें एक्सेप्शन हैं, रेज निर्माण के लिए एक प्राकृतिक प्रकार ''रेज ∈ एक्सेप्शन--> बॉट'' है, और इसी तरह अन्य नियंत्रण स्ट्रक्चर्स के लिए भी है। सहज रूप से, यहां बॉट उस प्रकार की गणना है जो कोई उत्तर रिटर्न नहीं देता है।
# बॉट बहुरूपी डेटा संरचनाओं के लीफ नोड्स को टाइप करने में उपयोगी है। उदाहरण के लिए, सूची (बॉट) शून्य के लिए एक अच्छा प्रकार है।
# बॉट पॉलीमॉर्फिक डेटा संरचनाओं के "लीफ नोड्स" टाइप करने में उपयोगी है। उदाहरण के लिए, लिस्ट (बॉट) <code>निल</code>के लिए एक अच्छा प्रकार है।
# जावा जैसी भाषाओं के [[नल पॉइंटर]] मान (एक सूचक जो किसी ऑब्जेक्ट को इंगित नहीं करता है) के लिए बॉट एक प्राकृतिक प्रकार है: [[जावा (प्रोग्रामिंग भाषा)]] में, नल प्रकार [[संदर्भ प्रकार]]ों का सार्वभौमिक उपप्रकार है। <code>null</code> शून्य प्रकार का एकमात्र मान है; और इसे किसी भी संदर्भ प्रकार में डाला जा सकता है।<ref>{{cite book | chapter-url = http://docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#4.1 | title = जावा भाषा विशिष्टता| edition = 3rd | chapter = Section 4.1: The Kinds of Types and Values }}</ref> हालाँकि, जैसा कि ऊपर वर्णित है, शून्य प्रकार निचला प्रकार नहीं है, यह इसका उपप्रकार नहीं है <code>int</code> और अन्य आदिम प्रकार।
# जावा जैसी लैंग्वेजेज के [[नल पॉइंटर|"नल पॉइंटर"]] मान (एक पॉइंटर जो किसी ऑब्जेक्ट को इंगित नहीं करता है) के लिए बॉट एक प्राकृतिक प्रकार है: [[जावा (प्रोग्रामिंग भाषा)|जावा]] में, नल प्रकार [[संदर्भ प्रकार|संदर्भ प्रकारों]] का सार्वभौमिक सबटाइप है। नल ''नल टाइप'' का एकमात्र मान है; और इसे किसी भी संदर्भ प्रकार में डाला जा सकता है।<ref>{{cite book | chapter-url = http://docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#4.1 | title = जावा भाषा विशिष्टता| edition = 3rd | chapter = Section 4.1: The Kinds of Types and Values }}</ref> हालाँकि, जैसा कि ऊपर वर्णित है, नल टाइप एक बॉटम टाइप नहीं है, यह इसका सबटाइप नहीं है <code>int</code> और अन्य अभाज्य प्रकारों का सबटाइप नहीं है।
# टॉप और बॉट दोनों सहित एक प्रकार की प्रणाली, प्रकार के अनुमान के लिए एक प्राकृतिक लक्ष्य प्रतीत होती है, जो एक छोड़े गए प्रकार के पैरामीटर पर बाधाओं को सीमाओं की एक जोड़ी द्वारा कैप्चर करने की अनुमति देती है: हम S<:X<:T का मान जानने के लिए लिखते हैं एक्स को एस और टी के बीच कहीं स्थित होना चाहिए। ऐसी योजना में, एक पूरी तरह से अप्रतिबंधित पैरामीटर नीचे बॉट से और ऊपर टॉप से ​​घिरा होता है।
# टॉप और बॉट दोनों सहित एक प्रकार की सिस्टम प्रकार के अनुमान के लिए एक स्वाभाविक लक्ष्य प्रतीत होती है, जो विलोपित प्रकार के पैरामीटर पर बाधाओं को सीमाओं की एक जोड़ी द्वारा अधिकृत करने की अनुमति देती है: हम S<:X<:T लिखते हैं जिसका अर्थ है "X का मान S और T के बीच कहीं होना चाहिए।" ऐसी योजना में, एक पूरी तरह से अप्रतिबंधित पैरामीटर नीचे बॉट द्वारा और ऊपर टॉप द्वारा सीमित किया जाता है।


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


[[हास्केल (प्रोग्रामिंग भाषा)]] में, <code>undefined</code> ई> स्थिरांक या के साथ बनाए गए पद <code>error</code> कंस्ट्रक्टर को किसी भी प्रकार का असाइन किया जा सकता है। ऐसी अभिव्यक्ति का मूल्यांकन करने का प्रयास करने से कोड अप्राप्य रूप से निरस्त हो जाता है।<ref>{{cite web |url=https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-230003.1 |website=Haskell 2010 Language Report |title=Chapter 3 Expressions |access-date=25 October 2022}}</ref> ध्यान दें कि हास्केल खाली प्रकारों की भी अनुमति देता है: [https://hackage.haskell.org/package/void-0.7/docs/Data-Void.html Data.Void]
[[हास्केल (प्रोग्रामिंग भाषा)|हास्केल]] में,<code>एरर</code>कंस्ट्रक्टर के साथ बनाए गए<code>अनडिफाइंड</code>स्थिरांक या शब्दों को किसी भी प्रकार का निर्दिष्ट किया जा सकता है। ऐसी एक्सप्रेशन का मूल्यांकन करने का प्रयास करने से कोड अप्राप्य रूप से निरस्त हो जाता है।<ref>{{cite web |url=https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-230003.1 |website=Haskell 2010 Language Report |title=Chapter 3 Expressions |access-date=25 October 2022}}</ref> ध्यान दें कि हास्केल एम्प्टी टाइपों की भी अनुमति देता है: [https://hackage.haskell.org/package/void-0.7/docs/Data-Void.html डाटा .वोइड]


[[सामान्य लिस्प]] में प्रकार <code>NIL</code>, इसमें कोई मान नहीं है और यह हर प्रकार का एक उपप्रकार है।<ref>{{cite web |title=शून्य टाइप करें|url=http://www.lispworks.com/documentation/HyperSpec/Body/t_nil.htm |website=Common Lisp HyperSpec |access-date=25 October 2022}}</ref> जिस प्रकार का नाम दिया गया है <code>NIL</code> कभी-कभी नामित प्रकार के साथ भ्रमित हो जाता है <code>NULL</code>, जिसका एक मान अर्थात प्रतीक है <code>NIL</code> अपने आप।
[[सामान्य लिस्प|कॉमन लिस्प]] में <code>निल</code>प्रकार में कोई मान नहीं है, और यह हर प्रकार का एक सबटाइप है।<ref>{{cite web |title=शून्य टाइप करें|url=http://www.lispworks.com/documentation/HyperSpec/Body/t_nil.htm |website=Common Lisp HyperSpec |access-date=25 October 2022}}</ref> <code>निल नाम का प्रकार कभी-कभी नल</code>नामक प्रकार के साथ भ्रमित हो जाता है, जिसका एक ही मान होता है, अर्थात प्रतीक<code>निल</code>है ।


[[स्काला (प्रोग्रामिंग भाषा)]] में, नीचे के प्रकार को इस प्रकार दर्शाया गया है <code>Nothing</code>. ऐसे फ़ंक्शंस के लिए इसके उपयोग के अलावा जो केवल अपवाद फेंकते हैं या अन्यथा सामान्य रूप से वापस नहीं आते हैं, इसका उपयोग सहप्रसरण और विरोधाभास (कंप्यूटर विज्ञान) पैरामीट्रिक बहुरूपता # पैरामीट्रिक बहुरूपता के लिए भी किया जाता है। उदाहरण के लिए, स्काला की सूची एक सहसंयोजक प्रकार का कंस्ट्रक्टर है <code>List[Nothing]</code> का एक उपप्रकार है <code>List[A]</code> सभी प्रकार के लिए ए. तो स्काला के लिए <code>Nil</code>, किसी भी प्रकार की सूची के अंत को चिह्नित करने के लिए वस्तु, प्रकार से संबंधित है <code>List[Nothing]</code>.
[[स्काला (प्रोग्रामिंग भाषा)|स्काला]] में, बॉटम टाइप को<code>नथिंग</code>के रूप में दर्शाया गया है। ऐसे फ़ंक्शंस के लिए इसके उपयोग के अलावा जो केवल एक्सेप्शन्स देते हैं या अन्यथा सामान्य रूप से रिटर्न नहीं होते हैं, इसका उपयोग सहसंयोजक पैरामीटरयुक्त प्रकारों के लिए भी किया जाता है। उदाहरण के लिए, स्काला की लिस्ट एक सहसंयोजक प्रकार की कंस्ट्रक्टर है, इसलिए<code>लिस्ट[नथिंग]</code> सभी प्रकार के <code>लिस्ट[A]</code> के लिए का एक सबटाइप है। इसलिए स्काला के लिए <code>निल</code>, किसी भी प्रकार की लिस्ट के अंत को चिह्नित करने के लिए ऑब्जेक्ट, टाइप <code>लिस्ट[नथिंग]</code>से संबंधित है।


रस्ट (प्रोग्रामिंग भाषा) में, निचले प्रकार को नेवर टाइप कहा जाता है और इसे द्वारा दर्शाया जाता है <code>!</code>. यह उन कार्यों के प्रकार हस्ताक्षर में मौजूद है जो कभी वापस न लौटने की गारंटी देते हैं, उदाहरण के लिए कॉल करके <code>panic!()</code> या हमेशा के लिए लूपिंग। यह कुछ नियंत्रण-प्रवाह कीवर्ड का भी प्रकार है, जैसे <code>break</code> और <code>return</code>, जो कोई मूल्य उत्पन्न नहीं करते लेकिन फिर भी अभिव्यक्ति के रूप में प्रयोग करने योग्य हैं।<ref>{{cite web
रस्ट में, बॉटम टाइप को नैवर टाइप कहा जाता है और इसे <code>!</code> द्वारा दर्शाया जाता है। यह फ़ंक्शन के प्रकार सिग्नेचर में निहित है जो कभी रिटर्न नहीं होने की गारंटी देते हैं, उदाहरण के लिए कॉल करके <code>पैनिक!()</code> या लूपिंग फॉरएवर को कॉल करके। यह कुछ नियंत्रण-प्रवाह कीवर्ड का भी प्रकार है, जैसे <code>ब्रेक</code>और <code>रिटर्न</code>, जो कोई मान उत्पन्न नहीं करते लेकिन फिर भी एक्सप्रेशन के रूप में प्रयोग करने योग्य हैं।<ref>{{cite web
| url = https://doc.rust-lang.org/std/primitive.never.html
| url = https://doc.rust-lang.org/std/primitive.never.html
| title = Primitive Type never
| title = Primitive Type never
Line 35: Line 36:
| access-date = 2020-09-24
| access-date = 2020-09-24
}}</ref>
}}</ref>
[[सीलोन (प्रोग्रामिंग भाषा)]] में, निचला प्रकार है <code>Nothing</code>.<ref>{{cite web
 
[[सीलोन (प्रोग्रामिंग भाषा)|सीलोन]] में, बॉटम टाइप <code>नथिंग</code>है।<ref>{{cite web
  | url = https://ceylon-lang.org/documentation/spec/html/typesystem.html#bottomtype
  | url = https://ceylon-lang.org/documentation/spec/html/typesystem.html#bottomtype
  | title = Chapter 3. Type system — 3.2.5. The bottom type
  | title = Chapter 3. Type system — 3.2.5. The bottom type
Line 41: Line 43:
  | publisher = Red Hat, Inc.
  | publisher = Red Hat, Inc.
  | access-date = 2017-02-19
  | access-date = 2017-02-19
}}</ref> यह तुलनीय है <code>Nothing</code> स्काला में और अन्य सभी प्रकारों के साथ-साथ एक खाली सेट के प्रतिच्छेदन का प्रतिनिधित्व करता है।
}}</ref> यह स्काला में<code>नथिंग</code>के बराबर है और अन्य सभी प्रकारों के साथ-साथ एक खाली सेट के प्रतिच्छेदन का प्रतिनिधित्व करता है।
 
[[जूलिया (प्रोग्रामिंग भाषा)|जूलिया]] में, बॉटम टाइप<code>यूनियन{}</code>है।<ref>{{Citation|title=Essentials - The Julia Language|website=The Julia Programming Language Documentation|url=https://docs.julialang.org/en/v1/base/base/#Union{}|access-date=2021-08-13}}</ref>
 
[[ टाइपप्रति |टाइपस्क्रिप्ट]] में, बॉटम टाइप<code>नैवर</code>है।<ref>{{Citation|title=The never type, TypeScript 2.0 release notes|date=2016-10-06|url=https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#the-never-type|publisher=Microsoft|access-date=2019-11-01}}</ref><ref>{{Citation|title=The never type, TypeScript 2.0 release notes, source code|date=2016-10-06|url=https://github.com/microsoft/TypeScript-Handbook/blob/bb3564f4f06dd776d430198a137ae9058454d990/pages/release%20notes/TypeScript%202.0.md#the-never-type|publisher=Microsoft|access-date=2019-11-01}}</ref>
 
क्लोजर टूल्स एनोटेशन के साथ [[जावास्क्रिप्ट]] में, बॉटम टाइप<code>!नल</code>(शाब्दिक रूप से, इसका <code>नल</code> इकाई प्रकार एक गैर-शून्य सदस्य) है।
 
[[PHP]] में, बॉटम टाइप<code>नैवर</code>है।


[[जूलिया (प्रोग्रामिंग भाषा)]] में, निचला प्रकार है <code>Union{}</code>.<ref>{{Citation|title=Essentials - The Julia Language|website=The Julia Programming Language Documentation|url=https://docs.julialang.org/en/v1/base/base/#Union{}|access-date=2021-08-13}}</ref>
[[पायथन (प्रोग्रामिंग भाषा)|पायथन]] में, बॉटम टाइप<code>टाइपिंग.नोरिटर्न</code>(<code>टाइपिंग.नैवर</code> संस्करण 3.11 से) है।<ref>{{Citation|title=typing.NoReturn, typing — Support for type hints, Python documentation|url=https://docs.python.org/3/library/typing.html#typing.NoReturn|publisher=Python Software Foundation|access-date=2020-02-25}}</ref><ref>{{Cite web |title=typing — Support for type hints — Python 3.12.0a0 documentation |url=https://docs.python.org/3.12/library/typing.html#typing.Never |access-date=2022-07-04 |website=docs.python.org}}</ref>
[[ टाइपप्रति ]] में, निचला प्रकार है <code>never</code>.<ref>{{Citation|title=The never type, TypeScript 2.0 release notes|date=2016-10-06|url=https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#the-never-type|publisher=Microsoft|access-date=2019-11-01}}</ref><ref>{{Citation|title=The never type, TypeScript 2.0 release notes, source code|date=2016-10-06|url=https://github.com/microsoft/TypeScript-Handbook/blob/bb3564f4f06dd776d430198a137ae9058454d990/pages/release%20notes/TypeScript%202.0.md#the-never-type|publisher=Microsoft|access-date=2019-11-01}}</ref>
Google क्लोजर टूल्स एनोटेशन के साथ [[जावास्क्रिप्ट]] में, निचला प्रकार है <code>!Null</code> (शाब्दिक रूप से, इसका एक गैर-शून्य सदस्य <code>Null</code> इकाई प्रकार)।


[[PHP]] में, निचला प्रकार है <code>never</code>.
[[कोटलिन (प्रोग्रामिंग भाषा)|कोटलिन]] में, बॉटम टाइप<code>नथिंग</code>है। <ref>{{Citation|title=Nothing|url=https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-nothing.html|access-date=2020-05-15}}</ref>
 
[[डी (प्रोग्रामिंग भाषा)|डी]] में, बॉटम टाइप <code>नॉरटर्न</code>है <ref>{{Cite web |title=प्रकार - डी प्रोग्रामिंग भाषा|url=https://dlang.org/spec/type.html#noreturn |access-date=2022-10-20 |website=dlang.org}}</ref>
 
[[डार्ट (प्रोग्रामिंग भाषा)|डार्ट]] में, [https://medium.com/dartlang/ausing-dart-2-12-499a6e689c87 ध्वनि शून्य सुरक्षा अपडेट]  संस्करण 2.12 के बाद से, के साथ,<code>नैवर</code> प्रकार को बॉटम टाइप के रूप में प्रस्तुत किया गया था। उससे पहले बॉटम टाइप<code>नल</code>हुआ करता था।<ref>{{Citation|title=Understanding null safety - top and bottom|url=https://dart.dev/null-safety/understanding-null-safety#top-and-bottom|access-date=2022-04-13}}</ref><ref>{{Citation|title=Understanding null safety - never for unreachable code|url=https://dart.dev/null-safety/understanding-null-safety#never-for-unreachable-code|access-date=2022-04-13}}</ref>


[[पायथन (प्रोग्रामिंग भाषा)]] में, निचला प्रकार है <code>typing.NoReturn</code> (<code>typing.Never</code> संस्करण 3.11 से)।<ref>{{Citation|title=typing.NoReturn, typing — Support for type hints, Python documentation|url=https://docs.python.org/3/library/typing.html#typing.NoReturn|publisher=Python Software Foundation|access-date=2020-02-25}}</ref><ref>{{Cite web |title=typing — Support for type hints — Python 3.12.0a0 documentation |url=https://docs.python.org/3.12/library/typing.html#typing.Never |access-date=2022-07-04 |website=docs.python.org}}</ref>
[[कोटलिन (प्रोग्रामिंग भाषा)]] में, निचला प्रकार है <code>Nothing</code>.<ref>{{Citation|title=Nothing|url=https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-nothing.html|access-date=2020-05-15}}</ref>
[[डी (प्रोग्रामिंग भाषा)]] में, निचला प्रकार है <code>noreturn</code><ref>{{Cite web |title=प्रकार - डी प्रोग्रामिंग भाषा|url=https://dlang.org/spec/type.html#noreturn |access-date=2022-10-20 |website=dlang.org}}</ref>
[[डार्ट (प्रोग्रामिंग भाषा)]] में, संस्करण 2.12 के बाद से [https://medium.com/dartlang/ausing-dart-2-12-499a6e689c87 ध्वनि शून्य सुरक्षा अद्यतन] के साथ, <code>Never</code> प्रकार को निचले प्रकार के रूप में पेश किया गया था। उससे पहले बॉटम टाइप हुआ करता था <code>Null</code>.<ref>{{Citation|title=Understanding null safety - top and bottom|url=https://dart.dev/null-safety/understanding-null-safety#top-and-bottom|access-date=2022-04-13}}</ref><ref>{{Citation|title=Understanding null safety - never for unreachable code|url=https://dart.dev/null-safety/understanding-null-safety#never-for-unreachable-code|access-date=2022-04-13}}</ref>




Line 58: Line 66:


*[[विरोधाभास]]
*[[विरोधाभास]]
*विफल-रुकना
*फेल-स्टॉप
*[[NaN]]
*[[NaN|एनएएन]]  
*शीर्ष प्रकार
*शीर्ष प्रकार
*इकाई प्रकार
*इकाई प्रकार
Line 72: Line 80:
{{data types}}
{{data types}}


{{DEFAULTSORT:Bottom Type}}[[Category: डेटा के प्रकार]] [[Category: प्रकार सिद्धांत]]
{{DEFAULTSORT:Bottom Type}}
 
 


[[Category: Machine Translated Page]]
[[Category:Collapse templates|Bottom Type]]
[[Category:Created On 11/07/2023]]
[[Category:Created On 11/07/2023|Bottom Type]]
[[Category:Lua-based templates|Bottom Type]]
[[Category:Machine Translated Page|Bottom Type]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Bottom Type]]
[[Category:Pages with script errors|Bottom Type]]
[[Category:Sidebars with styles needing conversion|Bottom Type]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Bottom Type]]
[[Category:Templates generating microformats|Bottom Type]]
[[Category:Templates that add a tracking category|Bottom Type]]
[[Category:Templates that are not mobile friendly|Bottom Type]]
[[Category:Templates that generate short descriptions|Bottom Type]]
[[Category:Templates using TemplateData|Bottom Type]]
[[Category:Wikipedia metatemplates|Bottom Type]]
[[Category:डेटा के प्रकार|Bottom Type]]
[[Category:प्रकार सिद्धांत|Bottom Type]]

Latest revision as of 09:36, 27 July 2023

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

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

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

कंप्यूटर विज्ञान अनुप्रयोग

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

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

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

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

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

प्रोग्रामिंग लैंग्वेजेज में

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

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

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

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

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

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

जूलिया में, बॉटम टाइपयूनियन{}है।[7]

टाइपस्क्रिप्ट में, बॉटम टाइपनैवरहै।[8][9]

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

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

पायथन में, बॉटम टाइपटाइपिंग.नोरिटर्न(टाइपिंग.नैवर संस्करण 3.11 से) है।[10][11]

कोटलिन में, बॉटम टाइपनथिंगहै। [12]

डी में, बॉटम टाइप नॉरटर्नहै [13]

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


यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 Pierce, Benjamin C. (1997). "तल के साथ परिबद्ध परिमाणीकरण". Indiana University CSCI Technical Report (492): 1.
  2. "Section 4.1: The Kinds of Types and Values". जावा भाषा विशिष्टता (3rd ed.).
  3. "Chapter 3 Expressions". Haskell 2010 Language Report. Retrieved 25 October 2022.
  4. "शून्य टाइप करें". Common Lisp HyperSpec. Retrieved 25 October 2022.
  5. "Primitive Type never". The Rust Standard Library Documentation. Retrieved 2020-09-24.
  6. "Chapter 3. Type system — 3.2.5. The bottom type". The Ceylon Language. Red Hat, Inc. Retrieved 2017-02-19.
  7. "Essentials - The Julia Language", The Julia Programming Language Documentation, retrieved 2021-08-13
  8. The never type, TypeScript 2.0 release notes, Microsoft, 2016-10-06, retrieved 2019-11-01
  9. The never type, TypeScript 2.0 release notes, source code, Microsoft, 2016-10-06, retrieved 2019-11-01
  10. typing.NoReturn, typing — Support for type hints, Python documentation, Python Software Foundation, retrieved 2020-02-25
  11. "typing — Support for type hints — Python 3.12.0a0 documentation". docs.python.org. Retrieved 2022-07-04.
  12. Nothing, retrieved 2020-05-15
  13. "प्रकार - डी प्रोग्रामिंग भाषा". dlang.org. Retrieved 2022-10-20.
  14. Understanding null safety - top and bottom, retrieved 2022-04-13
  15. Understanding null safety - never for unreachable code, retrieved 2022-04-13


अग्रिम पठन