फंक्शन प्रकार
कंप्यूटर विज्ञान और गणितीय तर्क में, फ़ंक्शन प्रकार (या तीर प्रकार या घातांक) चर (कंप्यूटर विज्ञान) या पैरामीटर (कंप्यूटर विज्ञान) का प्रकार होता है, जिसमें फ़ंक्शन (कंप्यूटर विज्ञान) को सौंपा जा सकता है, या तर्क या किसी फ़ंक्शन को लेने या वापस करने वाले उच्च-क्रम वाले फ़ंक्शन का परिणाम प्रकार।
फ़ंक्शन प्रकार पैरामीटर के प्रकार और फ़ंक्शन के परिणाम प्रकार पर निर्भर करता है (यह, या अधिक सटीक रूप से अप्रयुक्त प्रकार कंस्ट्रक्टर) · → ·, उच्च प्रकार का प्रकार है)। सैद्धांतिक सेटिंग्स और प्रोग्रामिंग भाषाओं में जहां फ़ंक्शन को निश्चित रूप में परिभाषित किया जाता है, जैसे कि बस टाइप किया गया लैम्ब्डा कैलकुलस, फ़ंक्शन प्रकार बिल्कुल दो प्रकारों पर निर्भर करता है, फ़ंक्शन ए का डोमेन और फ़ंक्शन बी की सीमा। यहां फ़ंक्शन प्रकार है अक्सर निरूपित किया जाता है A → B, गणितीय सम्मेलन का पालन करते हुए, या BA, वास्तव में वहां मौजूद के आधार पर BA (तेजी से कई) कार्य स्थान|सेट-सैद्धांतिक फ़ंक्शन सेट की श्रेणी में ए से बी तक मैपिंग करते हैं। ऐसे मानचित्रों या फ़ंक्शंस के वर्ग को घातीय वस्तु कहा जाता है। करींग का कार्य फ़ंक्शन प्रकार को उत्पाद प्रकार से संबद्ध फ़ैक्टर बनाता है; करीइंग पर लेख में इस पर विस्तार से चर्चा की गई है।
फ़ंक्शन प्रकार को आश्रित प्रकार#औपचारिक परिभाषा का विशेष मामला माना जा सकता है, जो अन्य गुणों के बीच, बहुरूपता (कंप्यूटर विज्ञान) के विचार को शामिल करता है।
प्रोग्रामिंग भाषाएँ
कई प्रोग्रामिंग भाषाओं में फ़ंक्शन प्रकारों के लिए उपयोग किए जाने वाले सिंटैक्स को संक्षेप में प्रस्तुत किया जा सकता है, जिसमें उच्च-क्रम फ़ंक्शन संरचना (कंप्यूटर विज्ञान) फ़ंक्शन के लिए उदाहरण प्रकार हस्ताक्षर शामिल है:
| 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.
|
function<function<int(int)>(function<int(int)>, function<int(int)>)> compose;
| |
उदाहरण के लिए C# के उदाहरण प्रकार के हस्ताक्षर को देखते समय, फ़ंक्शन का प्रकार compose वास्तव में है Func<Func<A,B>,Func<B,C>,Func<A,C>>.
C++11 में प्रकार मिटाना के कारण std::function, उच्च क्रम फ़ंक्शन पैरामीटर और प्रकार अनुमान के लिए टेम्पलेट (सी++) का उपयोग करना अधिक आम है (auto) समापन (कंप्यूटर प्रोग्रामिंग) के लिए।
सांकेतिक शब्दार्थ
प्रोग्रामिंग भाषाओं में फ़ंक्शन प्रकार सभी सेट-सैद्धांतिक फ़ंक्शंस के स्थान के अनुरूप नहीं है। डोमेन के रूप में अनगिनत प्रकार की प्राकृतिक संख्याओं और रेंज के रूप में बूलियन को देखते हुए, अनगिनत अनंत संख्या होती है (2)ℵ0 = उनके बीच सेट-सैद्धांतिक कार्यों की सातत्य की प्रमुखता)। स्पष्ट रूप से फ़ंक्शंस का यह स्थान किसी भी प्रोग्रामिंग भाषा में परिभाषित किए जा सकने वाले फ़ंक्शंस की संख्या से बड़ा है, क्योंकि केवल गिनती के कई प्रोग्राम मौजूद हैं ( प्रोग्राम सीमित संख्या में प्रतीकों का सीमित अनुक्रम है) और सेट-सैद्धांतिक फ़ंक्शंस में से रुकने की समस्या को प्रभावी ढंग से हल करता है।
फ़ंक्शन प्रकारों जैसे प्रोग्रामिंग भाषा अवधारणाओं को मॉडल करने के लिए अधिक उपयुक्त मॉडल (जिसे डोमेन सिद्धांत कहा जाता है) खोजने के साथ सांकेतिक शब्दार्थ का संबंध है। यह पता चला है कि अभिव्यक्ति को गणना योग्य कार्यों के सेट तक सीमित करना पर्याप्त नहीं है यदि प्रोग्रामिंग भाषा गैर-समाप्ति गणना लिखने की अनुमति देती है (यदि प्रोग्रामिंग भाषा ट्यूरिंग पूर्ण है तो यही स्थिति है)। अभिव्यक्ति तथाकथित सतत कार्यों तक ही सीमित होनी चाहिए#आंशिक रूप से क्रमित सेटों के बीच निरंतर कार्य (स्कॉट टोपोलॉजी में निरंतरता के अनुरूप, वास्तविक विश्लेषणात्मक अर्थ में निरंतरता नहीं)। फिर भी, निरंतर फ़ंक्शन के सेट में समानांतर-या फ़ंक्शन शामिल होता है, जिसे सभी प्रोग्रामिंग भाषाओं में सही ढंग से परिभाषित नहीं किया जा सकता है।
यह भी देखें
- कार्टेशियन बंद श्रेणी
- करी बनाना
- घातीय वस्तु, श्रेणी-सैद्धांतिक समकक्ष
- प्रथम श्रेणी का कार्य
- फ़ंक्शन स्पेस, सेट-सैद्धांतिक समकक्ष
संदर्भ
- 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.