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

From Vigyanwiki
m (Abhishek moved page निचला प्रकार to बॉटम टाइप without leaving a redirect)
(Text)
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>


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


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


==कंप्यूटर विज्ञान अनुप्रयोग==
==कंप्यूटर विज्ञान अनुप्रयोग==
Line 16: Line 16:
''बॉटम के साथ परिबद्ध परिमाणन'' में,<ref name="bounded" />पियर्स का कहना है कि "बॉट" के कई उपयोग हैं:
''बॉटम के साथ परिबद्ध परिमाणन'' में,<ref name="bounded" />पियर्स का कहना है कि "बॉट" के कई उपयोग हैं:


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


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


[[हास्केल (प्रोग्रामिंग भाषा)|हास्केल]] में, <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>एरर</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 डाटा .वोइड]।

Revision as of 14:34, 18 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


अग्रिम पठन