फंक्शन प्रकार: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
[[कंप्यूटर विज्ञान]] और [[गणितीय तर्क]] में,  फ़ंक्शन प्रकार (या तीर प्रकार या घातांक)  [[चर (कंप्यूटर विज्ञान)]] या [[पैरामीटर (कंप्यूटर विज्ञान)]] का प्रकार होता है, जिसमें  [[फ़ंक्शन (कंप्यूटर विज्ञान)]] को सौंपा जा सकता है, या तर्क या किसी फ़ंक्शन को लेने या वापस करने वाले उच्च-क्रम वाले फ़ंक्शन का परिणाम प्रकार।
[[कंप्यूटर विज्ञान]] और [[गणितीय तर्क|गणितीय  नियम]] में,  '''फलन  प्रकार''' (या तीर प्रकार या घातांक)  [[चर (कंप्यूटर विज्ञान)|वेरिएबल  (कंप्यूटर विज्ञान)]] या [[पैरामीटर (कंप्यूटर विज्ञान)]] का प्रकार होता है, जिसमें  [[फ़ंक्शन (कंप्यूटर विज्ञान)|फलन  (कंप्यूटर विज्ञान)]] को सौंपा जा सकता है, इस प्रकार से नियम या किसी भी  फलन  को या एक उच्च-क्रम फलन  लेने या लौटने का [[गणितीय तर्क|नियम]] या परिणाम प्रकार होता है।


फ़ंक्शन प्रकार पैरामीटर के प्रकार और फ़ंक्शन के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक सटीक रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर) <code>{{nowrap|· → ·}}</code>, [[उच्च प्रकार का]] प्रकार है)सैद्धांतिक सेटिंग्स और [[प्रोग्रामिंग भाषा]]ओं में जहां फ़ंक्शन को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस,  फ़ंक्शन प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, फ़ंक्शन ए का डोमेन और फ़ंक्शन बी की सीमा। यहां  फ़ंक्शन प्रकार है अक्सर निरूपित किया जाता है {{math|''A'' → ''B''}}, गणितीय सम्मेलन का पालन करते हुए, या {{math|''B''<sup>''A''</sup>}}, वास्तव में वहां मौजूद के आधार पर {{math|''B''<sup>''A''</sup>}} (तेजी से कई) [[कार्य स्थान]]|सेट-सैद्धांतिक फ़ंक्शन [[सेट की श्रेणी]] में ए से बी तक मैपिंग करते हैं। ऐसे मानचित्रों या फ़ंक्शंस के वर्ग को [[घातीय वस्तु]] कहा जाता है। [[करी]]ंग का कार्य फ़ंक्शन प्रकार को उत्पाद प्रकार से संबद्ध फ़ैक्टर बनाता है; करीइंग पर लेख में इस पर विस्तार से चर्चा की गई है।
'''फलन  प्रकार पैरामीटर के प्रकार और फलन  के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक स्पष्ट  रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर <code>{{nowrap|· → ·}}</code>, [[उच्च प्रकार का]] प्रकार है) किन्तु  सैद्धांतिक समुच्चय िंग्स और [[प्रोग्रामिंग भाषा]]ओं में जहां फलन  को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस,  फलन  प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, फलन  ए का डोमेन और फलन  बी की सीमा। यहां  फलन  प्रकार है सदैव  निरूपित किया जाता है , गणितीय सम्मेलन का पालन करते हुए, या {{math|''B''<sup>''A''</sup>}}, वास्तव में वहां उपस्तिथ  के आधार पर {{math|''B''<sup>''A''</sup>}} (तेजी से कई) [[कार्य स्थान]]|समुच्चय -सैद्धांतिक फलन  [[सेट की श्रेणी|समुच्चय  की श्रेणी]] में ए से बी तक मैपिंग करते हैं। ऐसे मानचित्रों या फलन  के वर्ग को [[घातीय वस्तु|घातीय रूप से]] कहा जाता है। [[करी]]का कार्य फलन  प्रकार को उत्पाद प्रकार से संबद्ध फ़ैक्टर बनाता है; करीइंग पर लेख में इस पर विस्तार से चर्चा की गई है।''' 


फ़ंक्शन प्रकार को आश्रित प्रकार#औपचारिक परिभाषा का  विशेष मामला माना जा सकता है, जो अन्य गुणों के बीच, [[बहुरूपता (कंप्यूटर विज्ञान)]] के विचार को शामिल करता है।
इस प्रकार से  फलन  प्रकार पैरामीटर के प्रकार और फलन  के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक स्पष्ट  रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर <code>{{nowrap|· → ·}}</code>, [[उच्च प्रकार का]] प्रकार है) । किन्तु सैद्धांतिक समुच्चय िंग्स और [[प्रोग्रामिंग भाषा]]ओं में जहां फलन  को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस, एक फलन  प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, डोमेन ''A''  और रेंज ''B''। यहां एक फलन  प्रकार को सदैव  गणितीय फलन   के बाद  द्वारा ''A'' → ''B'', दर्शाया जाता है , या {{math|''B''<sup>''A''</sup>}} वहां उपस्तिथ ा बिल्कुल {{math|''B''<sup>''A''</sup>}} ([[घातीय वस्तु|घातीय रूप से]] कई) समुच्चय -सैद्धांतिक फलन  के आधार पर [[सेट की श्रेणी|समुच्चय  की श्रेणी]] में ''A'' से ''B'' तक मैपिंग करता है। ऐसे मानचित्रों या फलन  के वर्ग को घातीय वस्तु कहा जाता है। [[करी|करीइंग]] का कार्य फलन  प्रकार को उत्पाद प्रकार से जोड़ देता है; करीइंग पर लेख में इस पर विस्तार से चर्चा की गई है।
 
अतः फलन  प्रकार को आश्रित प्रकार या औपचारिक परिभाषा का  विशेष स्तिथियों में    माना जा सकता है, जोकी  अन्य गुणों के मध्य , [[बहुरूपता (कंप्यूटर विज्ञान)|बहुरूपी (कंप्यूटर विज्ञान)]] के विचार को सम्मिलित करता है।  


== प्रोग्रामिंग भाषाएँ ==
== प्रोग्रामिंग भाषाएँ ==
कई प्रोग्रामिंग भाषाओं में फ़ंक्शन प्रकारों के लिए उपयोग किए जाने वाले सिंटैक्स को संक्षेप में प्रस्तुत किया जा सकता है, जिसमें उच्च-क्रम [[फ़ंक्शन संरचना (कंप्यूटर विज्ञान)]] फ़ंक्शन के लिए  उदाहरण प्रकार हस्ताक्षर शामिल है:
इस प्रकार से कई प्रोग्रामिंग भाषाओं में फलन  प्रकारों के लिए उपयोग किए जाने वाले सिंटैक्स को संक्षेप में प्रस्तुत किया जा सकता है, जिसमें उच्च-क्रम [[फ़ंक्शन संरचना (कंप्यूटर विज्ञान)|फलन  संरचना (कंप्यूटर विज्ञान)]] फलन  के लिए  उदाहरण प्रकार हस्ताक्षर सम्मिलित किये जाते  है:
{| class=wikitable
{| class=wikitable
|-
|-
Line 60: Line 62:


|}
|}
उदाहरण के लिए C# के उदाहरण प्रकार के हस्ताक्षर को देखते समय, फ़ंक्शन का प्रकार {{code|compose}} वास्तव में है <code>Func<Func<A,B>,Func&lt;B,C>,Func<A,C>></code>.
इस प्रकार से उदाहरण के लिए C# के उदाहरण प्रकार के हस्ताक्षर को देखते समय, फलन  का प्रकार {{code|कंपोज़}} वास्तव में <code>Func<Func<A,B>,Func<B,C>,Func<A,C>>है</code>.
 
'''[[टेम्पलेट (सी++)|सी++]]11 में [[प्रकार मिटाना]] के कारण <code>std::function</code>, उच्च क्रम फलन  पैरामीटर और प्रकार अनुमान के लिए  [[टेम्पलेट (सी++)|(सी++)]] का उपयोग करना अधिक समान  है (<code>auto</code>) [[ समापन (कंप्यूटर प्रोग्रामिंग) |समापन (कंप्यूटर प्रोग्रामिंग)]] के लिए।'''


C++11 में [[प्रकार मिटाना]] के कारण <code>std::function</code>, उच्च क्रम फ़ंक्शन पैरामीटर और प्रकार अनुमान के लिए [[टेम्पलेट (सी++)]] का उपयोग करना अधिक आम है (<code>auto</code>) [[ समापन (कंप्यूटर प्रोग्रामिंग) |समापन (कंप्यूटर प्रोग्रामिंग)]] के लिए।
[[टेम्पलेट (सी++)|सी++]]11 के std::फलन में टाइप इरेज़र के कारण, उच्च ऑर्डर फ़ंक्शन पैरामीटर के लिए [[टेम्पलेट (सी++)|टेम्पलेट]] और क्लोजर के लिए टाइप अनुमान (ऑटो) का उपयोग करना अधिक समान होता  है।


== सांकेतिक शब्दार्थ ==
== सांकेतिक शब्दार्थ ==
प्रोग्रामिंग भाषाओं में फ़ंक्शन प्रकार सभी सेट-सैद्धांतिक फ़ंक्शंस के स्थान के अनुरूप नहीं है। डोमेन के रूप में अनगिनत प्रकार की [[प्राकृतिक संख्या]]ओं और रेंज के रूप में बूलियन को देखते हुए,  अनगिनत अनंत संख्या होती है (2)<sup>ℵ<sub>0</sub></sup> = उनके बीच सेट-सैद्धांतिक कार्यों की [[सातत्य की प्रमुखता]])। स्पष्ट रूप से फ़ंक्शंस का यह स्थान किसी भी प्रोग्रामिंग भाषा में परिभाषित किए जा सकने वाले फ़ंक्शंस की संख्या से बड़ा है, क्योंकि केवल गिनती के कई प्रोग्राम मौजूद हैं ( प्रोग्राम सीमित संख्या में प्रतीकों का  सीमित अनुक्रम है) और सेट-सैद्धांतिक फ़ंक्शंस में से  [[रुकने की समस्या]] को प्रभावी ढंग से हल करता है।
प्रोग्रामिंग भाषाओं में फलन  प्रकार सभी समुच्चय -सैद्धांतिक फलन  के स्थान के अनुरूप नहीं है। डोमेन के रूप में अनगिनत प्रकार की [[प्राकृतिक संख्या]]ओं और रेंज के रूप में बूलियन को देखते हुए,  अनगिनत अनंत संख्या (2<sup>ℵ<sub>0</sub></sup> = c) होती है उनके मध्य  समुच्चय -सैद्धांतिक कार्यों की [[सातत्य की प्रमुखता]])। स्पष्ट रूप से फलन  का यह स्थान किसी भी प्रोग्रामिंग भाषा में परिभाषित किए जा सकने वाले फलन  की संख्या से उच्च  है, क्योंकि केवल गिनती के कई प्रोग्राम उपस्तिथ  हैं ( प्रोग्राम सीमित संख्या में प्रतीकों का  सीमित अनुक्रम है) और समुच्चय -सैद्धांतिक फलन  में से  [[रुकने की समस्या|हाल्टिंग समस्या  ]] को प्रभावी ढंग से हल करता है।


फ़ंक्शन प्रकारों जैसे प्रोग्रामिंग भाषा अवधारणाओं को मॉडल करने के लिए अधिक उपयुक्त मॉडल (जिसे [[डोमेन सिद्धांत]] कहा जाता है) खोजने के साथ [[सांकेतिक शब्दार्थ]] का संबंध है। यह पता चला है कि अभिव्यक्ति को [[गणना योग्य कार्य]]ों के सेट तक सीमित करना पर्याप्त नहीं है यदि प्रोग्रामिंग भाषा [[गैर-समाप्ति गणना]] लिखने की अनुमति देती है (यदि प्रोग्रामिंग भाषा [[ट्यूरिंग पूर्ण]] है तो यही स्थिति है)। अभिव्यक्ति तथाकथित सतत कार्यों तक ही सीमित होनी चाहिए#आंशिक रूप से क्रमित सेटों के बीच निरंतर कार्य ([[स्कॉट टोपोलॉजी]] में निरंतरता के अनुरूप, वास्तविक विश्लेषणात्मक अर्थ में निरंतरता नहीं)। फिर भी, निरंतर फ़ंक्शन के सेट में समानांतर-या फ़ंक्शन शामिल होता है, जिसे सभी प्रोग्रामिंग भाषाओं में सही ढंग से परिभाषित नहीं किया जा सकता है।
इस प्रकार से फलन  प्रकारों जैसे प्रोग्रामिंग भाषा अवधारणाओं को मॉडल करने के लिए अधिक उपयुक्त मॉडल (जिसे [[डोमेन सिद्धांत]] कहा जाता है) खोजने के साथ [[सांकेतिक शब्दार्थ]] का संबंध होता  है। यह पता चला है कि अभिव्यक्ति को [[गणना योग्य कार्य]] के समुच्चय  तक सीमित करना पर्याप्त नहीं होते  है यदि प्रोग्रामिंग भाषा [[गैर-समाप्ति गणना]] लिखने की अनुमति देती है (यदि प्रोग्रामिंग भाषा [[ट्यूरिंग पूर्ण]] है तो यही स्थिति है)। अभिव्यक्ति तथाकथित सतत कार्यों तक ही सीमित होनी चाहिए या आंशिक रूप से क्रमित समुच्चय के मध्य  निरंतर कार्य ([[स्कॉट टोपोलॉजी]] में निरंतरता के अनुरूप, वास्तविक विश्लेषणात्मक अर्थ में निरंतरता नहीं)। इसके अतिरिक्त , निरंतर फलन  के समुच्चय  में समानांतर-या फलन  सम्मिलित होता है, जिसे सभी प्रोग्रामिंग भाषाओं में सही ढंग से परिभाषित नहीं किया जा सकता है।


== यह भी देखें ==
== यह भी देखें ==
* कार्टेशियन बंद श्रेणी
* कार्टेशियन बंद श्रेणी
*करी बनाना
*करी  
* घातीय वस्तु, श्रेणी-सैद्धांतिक समकक्ष
* घातांकीय वस्तु, श्रेणी-सैद्धांतिक समतुल्य
* [[प्रथम श्रेणी का कार्य]]
* [[प्रथम श्रेणी का कार्य|प्रथम श्रेणी का फलन]]  
* फ़ंक्शन स्पेस, सेट-सैद्धांतिक समकक्ष
* फलन  स्पेस, समुच्चय -सैद्धांतिक समकक्ष


== संदर्भ ==
== संदर्भ ==

Revision as of 23:35, 6 July 2023

कंप्यूटर विज्ञान और गणितीय नियम में, फलन प्रकार (या तीर प्रकार या घातांक) वेरिएबल (कंप्यूटर विज्ञान) या पैरामीटर (कंप्यूटर विज्ञान) का प्रकार होता है, जिसमें फलन (कंप्यूटर विज्ञान) को सौंपा जा सकता है, इस प्रकार से नियम या किसी भी फलन को या एक उच्च-क्रम फलन लेने या लौटने का नियम या परिणाम प्रकार होता है।

फलन प्रकार पैरामीटर के प्रकार और फलन के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक स्पष्ट रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर · → ·, उच्च प्रकार का प्रकार है) किन्तु सैद्धांतिक समुच्चय िंग्स और प्रोग्रामिंग भाषाओं में जहां फलन को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस, फलन प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, फलन ए का डोमेन और फलन बी की सीमा। यहां फलन प्रकार है सदैव निरूपित किया जाता है , गणितीय सम्मेलन का पालन करते हुए, या BA, वास्तव में वहां उपस्तिथ के आधार पर BA (तेजी से कई) कार्य स्थान|समुच्चय -सैद्धांतिक फलन समुच्चय की श्रेणी में ए से बी तक मैपिंग करते हैं। ऐसे मानचित्रों या फलन के वर्ग को घातीय रूप से कहा जाता है। करीग का कार्य फलन प्रकार को उत्पाद प्रकार से संबद्ध फ़ैक्टर बनाता है; करीइंग पर लेख में इस पर विस्तार से चर्चा की गई है।

इस प्रकार से फलन प्रकार पैरामीटर के प्रकार और फलन के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक स्पष्ट रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर · → ·, उच्च प्रकार का प्रकार है) । किन्तु सैद्धांतिक समुच्चय िंग्स और प्रोग्रामिंग भाषाओं में जहां फलन को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस, एक फलन प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, डोमेन A और रेंज B। यहां एक फलन प्रकार को सदैव गणितीय फलन   के बाद द्वारा AB, दर्शाया जाता है , या BA वहां उपस्तिथ ा बिल्कुल BA (घातीय रूप से कई) समुच्चय -सैद्धांतिक फलन के आधार पर समुच्चय की श्रेणी में A से B तक मैपिंग करता है। ऐसे मानचित्रों या फलन के वर्ग को घातीय वस्तु कहा जाता है। करीइंग का कार्य फलन प्रकार को उत्पाद प्रकार से जोड़ देता है; करीइंग पर लेख में इस पर विस्तार से चर्चा की गई है।

अतः फलन प्रकार को आश्रित प्रकार या औपचारिक परिभाषा का विशेष स्तिथियों में माना जा सकता है, जोकी अन्य गुणों के मध्य , बहुरूपी (कंप्यूटर विज्ञान) के विचार को सम्मिलित करता है।

प्रोग्रामिंग भाषाएँ

इस प्रकार से कई प्रोग्रामिंग भाषाओं में फलन प्रकारों के लिए उपयोग किए जाने वाले सिंटैक्स को संक्षेप में प्रस्तुत किया जा सकता है, जिसमें उच्च-क्रम फलन संरचना (कंप्यूटर विज्ञान) फलन के लिए उदाहरण प्रकार हस्ताक्षर सम्मिलित किये जाते है:

Language Notation Example type signature
With first-class functions,
parametric polymorphism
C# Func<α1,α2,...,αn,ρ> Func<A,C> compose(Func<B,C> f, Func<A,B> g);
Haskell α -> ρ compose :: (b -> c) -> (a -> b) -> a -> c
OCaml α -> ρ compose : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
Scala (α1,α2,...,αn) => ρ def compose[A, B, C](f: B => C, g: A => B): A => C
Standard ML α -> ρ compose : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
Swift α -> ρ func compose<A,B,C>(f: (B) -> C, g: (A) -> B) -> (A) -> C
Rust fn(α1,α2,...,αn) -> ρ fn compose<A, B, C>(f: fn(A) -> B, g: fn(B) -> C) -> fn(A) -> C
With first-class functions,
without parametric polymorphism
Go func(α1,α2,...,αn) ρ var compose func(func(int)int, func(int)int) func(int)int
C++, Objective-C, with blocks ρ (^)(α1,α2,...,αn) int (^compose(int (^f)(int), int (^g)(int)))(int);
Without first-class functions,
parametric polymorphism
C ρ (*)(α1,α2,...,αn) int (*compose(int (*f)(int), int (*g)(int)))(int);
C++11 Not unique.

std::function<ρ (α1,α2,...,αn)> is the more general type (see below).

function<function<int(int)>(function<int(int)>, function<int(int)>)> compose;

इस प्रकार से उदाहरण के लिए C# के उदाहरण प्रकार के हस्ताक्षर को देखते समय, फलन का प्रकार कंपोज़ वास्तव में Func<Func<A,B>,Func<B,C>,Func<A,C>>है.

सी++11 में प्रकार मिटाना के कारण std::function, उच्च क्रम फलन पैरामीटर और प्रकार अनुमान के लिए (सी++) का उपयोग करना अधिक समान है (auto) समापन (कंप्यूटर प्रोग्रामिंग) के लिए।

सी++11 के std::फलन में टाइप इरेज़र के कारण, उच्च ऑर्डर फ़ंक्शन पैरामीटर के लिए टेम्पलेट और क्लोजर के लिए टाइप अनुमान (ऑटो) का उपयोग करना अधिक समान होता है।

सांकेतिक शब्दार्थ

प्रोग्रामिंग भाषाओं में फलन प्रकार सभी समुच्चय -सैद्धांतिक फलन के स्थान के अनुरूप नहीं है। डोमेन के रूप में अनगिनत प्रकार की प्राकृतिक संख्याओं और रेंज के रूप में बूलियन को देखते हुए, अनगिनत अनंत संख्या (20 = c) होती है उनके मध्य समुच्चय -सैद्धांतिक कार्यों की सातत्य की प्रमुखता)। स्पष्ट रूप से फलन का यह स्थान किसी भी प्रोग्रामिंग भाषा में परिभाषित किए जा सकने वाले फलन की संख्या से उच्च है, क्योंकि केवल गिनती के कई प्रोग्राम उपस्तिथ हैं ( प्रोग्राम सीमित संख्या में प्रतीकों का सीमित अनुक्रम है) और समुच्चय -सैद्धांतिक फलन में से हाल्टिंग समस्या   को प्रभावी ढंग से हल करता है।

इस प्रकार से फलन प्रकारों जैसे प्रोग्रामिंग भाषा अवधारणाओं को मॉडल करने के लिए अधिक उपयुक्त मॉडल (जिसे डोमेन सिद्धांत कहा जाता है) खोजने के साथ सांकेतिक शब्दार्थ का संबंध होता है। यह पता चला है कि अभिव्यक्ति को गणना योग्य कार्य के समुच्चय तक सीमित करना पर्याप्त नहीं होते है यदि प्रोग्रामिंग भाषा गैर-समाप्ति गणना लिखने की अनुमति देती है (यदि प्रोग्रामिंग भाषा ट्यूरिंग पूर्ण है तो यही स्थिति है)। अभिव्यक्ति तथाकथित सतत कार्यों तक ही सीमित होनी चाहिए या आंशिक रूप से क्रमित समुच्चय के मध्य निरंतर कार्य (स्कॉट टोपोलॉजी में निरंतरता के अनुरूप, वास्तविक विश्लेषणात्मक अर्थ में निरंतरता नहीं)। इसके अतिरिक्त , निरंतर फलन के समुच्चय में समानांतर-या फलन सम्मिलित होता है, जिसे सभी प्रोग्रामिंग भाषाओं में सही ढंग से परिभाषित नहीं किया जा सकता है।

यह भी देखें

  • कार्टेशियन बंद श्रेणी
  • करी
  • घातांकीय वस्तु, श्रेणी-सैद्धांतिक समतुल्य
  • प्रथम श्रेणी का फलन
  • फलन स्पेस, समुच्चय -सैद्धांतिक समकक्ष

संदर्भ

  • Pierce, Benjamin C. (2002). Types and Programming Languages. The MIT Press. pp. 99–100. ISBN 9780262162098.
  • Mitchell, John C. Foundations for Programming Languages. The MIT Press.
  • function type at the nLab
  • Homotopy Type Theory: Univalent Foundations of Mathematics, The Univalent Foundations Program, Institute for Advanced Study. See section 1.2.