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

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


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


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


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


|}
|}
इस प्रकार से उदाहरण के लिए C# के उदाहरण प्रकार के हस्ताक्षर को देखते समय, फलन का प्रकार {{code|कंपोज़}} वास्तव में <code>Func<Func<A,B>,Func<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>) [[ समापन (कंप्यूटर प्रोग्रामिंग) |समापन (कंप्यूटर प्रोग्रामिंग)]] के लिए।'''


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


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


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


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


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

Revision as of 23:36, 6 July 2023

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

इस प्रकार से फलन प्रकार पैरामीटर के प्रकार और फलन के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक स्पष्ट रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर · → ·, उच्च प्रकार का प्रकार है) । किन्तु सैद्धांतिक समुच्चय िंग्स और प्रोग्रामिंग भाषाओं में जहां फलन को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस, एक फलन प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, डोमेन 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::फलन में टाइप इरेज़र के कारण, उच्च ऑर्डर फ़ंक्शन पैरामीटर के लिए टेम्पलेट और क्लोजर के लिए टाइप अनुमान (ऑटो) का उपयोग करना अधिक समान होता है।

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

प्रोग्रामिंग भाषाओं में फलन प्रकार सभी समुच्चय -सैद्धांतिक फलन के स्थान के अनुरूप नहीं है। डोमेन के रूप में अनगिनत प्रकार की प्राकृतिक संख्याओं और रेंज के रूप में बूलियन को देखते हुए, अनगिनत अनंत संख्या (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.