कर्र्यींग (Currying): Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Transforming a function in such a way that it only takes a single argument}} | {{short description|Transforming a function in such a way that it only takes a single argument}} | ||
{{about|गणितीय तकनीक|इस नाम की खाना पकाने की प्रक्रिया|करी|चमड़ा परिष्करण प्रक्रिया|कर्रिएर|घोड़े की देखभाल|करीकंघी}} | {{about|गणितीय तकनीक|इस नाम की खाना पकाने की प्रक्रिया|करी|चमड़ा परिष्करण प्रक्रिया|कर्रिएर|घोड़े की देखभाल|करीकंघी}} | ||
गणित और [[कंप्यूटर विज्ञान]] में, करींग एक | गणित और [[कंप्यूटर विज्ञान]] में, करींग एक के मूल्यांकन का अनुवाद करने की विधि है जो कार्यों के [[पैरामीटर (कंप्यूटर विज्ञान)|अनुक्रम (कंप्यूटर विज्ञान)]] का मूल्यांकन करने में कई तर्क लेता है, प्रत्येक एक तर्क के साथ। उदाहरण के लिए, एक कलन <math>f</math> जो तीन तर्क लेता है, एक स्थिर एकल फलन <math>g</math> बनाता है, ताकि संकेत | ||
:<math>\text{let }x=f(a,b,c)</math> | :<math>\text{let }x=f(a,b,c)</math> | ||
संकेत के समान मान <math>x</math> देता है | |||
:<math> | :<math> | ||
\begin{align} | \begin{align} | ||
Line 14: | Line 14: | ||
या क्रम में कहा जाता है, | या क्रम में कहा जाता है, | ||
:<math>\text{let }x = g(a)(b)(c).</math> | :<math>\text{let }x = g(a)(b)(c).</math> | ||
गणितीय भाषा में अधिकतर, एक फलन जो दो तर्क लेता है, एक से <math>X</math> और दूसरे से <math>Y</math>, और <math>Z,</math> में आउटपुट उत्पन्न करता है करीइंग द्वारा एक फलन में अनुवादित किया जाता है जो <math>X</math> से एकल तर्क लेता है और <math>Y</math> से <math>Z</math> तक आउटपुट फ़ंक्शन के रूप में उत्पन्न करता है। यह इन दो प्रकार के कार्यों के बीच एक स्वाभाविक एक-से-एक पत्राचार है, जिससे कि [[सेट (गणित)]] उनके बीच के कार्यों के साथ एक [[कार्टेशियन बंद श्रेणी|कार्तीय बंद श्रेणी]] बनाते हैं। दो से अधिक तर्कों वाले फलन की करी को तब प्रेरण द्वारा परिभाषित किया जा सकता है। करी संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है। | |||
करी करना व्यावहारिक और सैद्धांतिक दोनों स्थितियों में उपयोगी है। [[कार्यात्मक प्रोग्रामिंग भाषा|कार्यात्मक प्रोग्रामिंग भाषाओं]] और कई अन्य भाषाओं में, यह स्वचालित रूप से प्रबंधित करने का एक विधि प्रदान करता है कि फलन और अपवादों के लिए तर्क कैसे पास किए जाते हैं। [[सैद्धांतिक कंप्यूटर विज्ञान]] में, यह सरल सैद्धांतिक मॉडल में कई तर्कों के साथ कार्यों का अध्ययन करने का एक विधि प्रदान करता है जो केवल एक तर्क प्रदान करता है। करी और अनकरींग की सख्त धारणा के लिए सबसे सामान्य सेटिंग [[बंद मोनोइडल श्रेणी]] में है, जो क्वांटम यांत्रिकी, कोबोर्डिज्म और स्ट्रिंग सिद्धांत सहित कई अन्य संरचनाओं के साथ पत्राचार के लिए करी-हावर्ड पत्राचार के सबूत और कार्यक्रमों के विशाल सामान्यीकरण को रेखांकित करता है। .<ref name="rosetta"/> यह [[Gottlob Frege|गोटलॉब फ्रेज]] द्वारा प्रस्तुत किया गया था,<ref name=Frege>[[Gottlob Frege]], ''Grundgesetze der Arithmetik'' I, Jena: Verlag Hermann Pohle, 1893, §36.</ref><ref name=:0>[[Willard Van Orman Quine]], introduction to [[Moses Schönfinkel]]'s "Bausteine der mathematischen Logik", pp. 355–357, esp. 355. Translated by Stefan Bauer-Mengelberg as "On the building blocks of mathematical logic" in [[Jean van Heijenoort]] (1967), ''A Source Book in Mathematical Logic, 1879–1931''. Harvard University Press, pp. 355–66.</ref> मूसा शॉनफिंकेल द्वारा विकसित,<ref name=:0/><ref name=Strachey>{{cite journal|first=Christopher|last=Strachey|author-link=Christopher Strachey|title=प्रोग्रामिंग भाषाओं में मौलिक अवधारणाएँ|journal=[[Higher-Order and Symbolic Computation]]|volume=13|page=21|year=2000|quote=एकल ऑपरेंड ऑपरेटरों के क्रमिक अनुप्रयोग के लिए कई ऑपरेंड वाले ऑपरेटरों को कम करने के लिए शॉनफिंकेल द्वारा उत्पन्न एक उपकरण है।|doi=10.1023/A:1010000313106|s2cid=14124601 |citeseerx=10.1.1.332.3161}} (Reprinted lecture notes from 1967.)</ref><ref name=Reynolds>{{cite journal|first=John C.|last=Reynolds|author-link=John C. Reynolds|title=हायर-ऑर्डर प्रोग्रामिंग लैंग्वेज के लिए डेफिनिशनल इंटरप्रेटर|journal=Proceedings of the ACM Annual Conference|volume=2|issue=4|pages=717–740|doi=10.1145/800194.805852|quote=अंतिम पंक्ति में हमने बाइनरी ऑपरेशन को एक भाषा में शुरू करने की समस्या को हल करने के लिए करीइंग (तर्कशास्त्री एच. करी के बाद) नामक एक ट्रिक का उपयोग किया है जहां सभी कार्यों को एक ही तर्क को स्वीकार करना होगा। (रेफरी की टिप्पणी है कि हालांकि "करीइंग" स्वादिष्ट है, "शॉनफिंकेलिंग" अधिक सटीक हो सकता है।)|year=1972|s2cid=163294|url=https://surface.syr.edu/cgi/viewcontent.cgi?article=1012&context=lcsmith_other}}</ref><ref>Kenneth Slonneger and Barry L. Kurtz. ''Formal Syntax and Semantics of Programming Languages''. 1995. p. 144.</ref> | |||
और आगे [[हास्केल करी]] द्वारा विकसित किया गया।<ref>Henk Barendregt, Erik Barendsen, "[http://www.nyu.edu/projects/barker/Lambda/barendregt.94.pdf Introduction to Lambda Calculus]", March 2000, page 8.</ref><ref>{{cite book|last=Curry|first=Haskell|author2=Feys, Robert|title=संयोजन तर्क|publisher=North-Holland Publishing Company |volume=I|edition=2|year=1958|location=Amsterdam, Netherlands}}</ref> | और आगे [[हास्केल करी]] द्वारा विकसित किया गया।<ref>Henk Barendregt, Erik Barendsen, "[http://www.nyu.edu/projects/barker/Lambda/barendregt.94.pdf Introduction to Lambda Calculus]", March 2000, page 8.</ref><ref>{{cite book|last=Curry|first=Haskell|author2=Feys, Robert|title=संयोजन तर्क|publisher=North-Holland Publishing Company |volume=I|edition=2|year=1958|location=Amsterdam, Netherlands}}</ref> | ||
अनकरींग [[द्वैत (गणित)]] को करी करने के लिए परिवर्तन है, और इसे [[निष्क्रियता]] के एक रूप के रूप में देखा जा सकता है। यह एक फलन (गणित) <math>f</math> लेता है जिसका रिटर्न वैल्यू एक और फंक्शन <math>g</math> है, और एक नया फलन <math>f'</math>उत्पन्न करता है जो पैरामीटर के रूप में दोनों <math>f</math> के लिए तर्क लेता है, और <math>g</math> परिणामस्वरूप उन तर्कों के लिए <math>f</math> और बाद में,<math>g</math>,का अनुप्रयोग करता है। और इस प्रक्रिया को पुनरावृत्त किया जा सकता है। | |||
== प्रेरणा == | == प्रेरणा == | ||
करींग उन कार्यों के साथ काम करने का एक | करींग उन कार्यों के साथ काम करने का एक विधि प्रदान करता है जो कई तर्क लेते हैं, और उन्हें ढांचे में उपयोग करते हैं जहां कार्य केवल एक तर्क ले सकते हैं। उदाहरण के लिए, कुछ #Definition केवल एक तर्क के साथ फलन (गणित) पर लागू किए जा सकते हैं। व्यावहारिक कार्य अक्सर इससे अधिक तर्क लेते हैं। गोटलॉब फ्रेग ने दिखाया कि यह एकल तर्क मामले के लिए समाधान प्रदान करने के लिए पर्याप्त था, क्योंकि एक फलन को कई तर्कों के साथ एकल-तर्क कार्यों की श्रृंखला में बदलना संभव था। यह परिवर्तन अब करी के रूप में जानी जाने वाली प्रक्रिया है।<ref>{{cite web|url=http://www.cs.nott.ac.uk/~gmh/faq.html#currying|title=Comp.lang.functional के लिए अक्सर पूछे जाने वाले प्रश्न: Currying|author=Graham Hutton|work=nott.ac.uk}}</ref> [[गणितीय विश्लेषण]] या [[कंप्यूटर प्रोग्रामिंग]] में आम तौर पर सामने आने वाले सभी सामान्य कार्यों को नियंत्रित किया जा सकता है। हालांकि, ऐसी श्रेणियां हैं जिनमें करी बनाना संभव नहीं है; करीने की अनुमति देने वाली सबसे सामान्य श्रेणियां बंद मोनोइडल श्रेणी हैं। | ||
कुछ प्रोग्रामिंग लैंग्वेज लगभग हमेशा कई तर्कों को प्राप्त करने के लिए करीबी कार्यों का उपयोग करती हैं; उल्लेखनीय उदाहरण [[एमएल ([[प्रोग्रामिंग भाषा]])]] और [[हास्केल (प्रोग्रामिंग भाषा)]] हैं, जहां दोनों मामलों में सभी कार्यों में बिल्कुल एक तर्क होता है। यह संपत्ति लैम्ब्डा कैलकुस से विरासत में मिली है, जहां बहु-तर्क कार्यों को आम तौर पर घुमावदार रूप में दर्शाया जाता है। | कुछ प्रोग्रामिंग लैंग्वेज लगभग हमेशा कई तर्कों को प्राप्त करने के लिए करीबी कार्यों का उपयोग करती हैं; उल्लेखनीय उदाहरण [[एमएल ([[प्रोग्रामिंग भाषा]])]] और [[हास्केल (प्रोग्रामिंग भाषा)]] हैं, जहां दोनों मामलों में सभी कार्यों में बिल्कुल एक तर्क होता है। यह संपत्ति लैम्ब्डा कैलकुस से विरासत में मिली है, जहां बहु-तर्क कार्यों को आम तौर पर घुमावदार रूप में दर्शाया जाता है। | ||
करी संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है। अभ्यास में, [[क्लोजर (कंप्यूटर प्रोग्रामिंग)]] की प्रोग्रामिंग | करी संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है। अभ्यास में, [[क्लोजर (कंप्यूटर प्रोग्रामिंग)]] की प्रोग्रामिंग विधि का उपयोग आंशिक अनुप्रयोग और एक प्रकार की करींग करने के लिए किया जा सकता है, जो करी फलन के साथ यात्रा करने वाले वातावरण में तर्क छिपाकर करता है। | ||
=== चित्रण === | === चित्रण === | ||
मान लीजिए हमारे पास एक | मान लीजिए हमारे पास एक कलन है <math>f:\mathbb{R}\times\mathbb{R}\to\mathbb{R}</math> जो दो [[वास्तविक संख्या]] लेता है (<math>\mathbb{R}</math>) तर्क और वास्तविक संख्या को आउटपुट करता है, और इसके द्वारा परिभाषित किया जाता है <math>f(x,y)=x+y^2</math>. करींग इसे एक कलन में अनुवादित करता है <math>h</math> जो एक वास्तविक तर्क लेता है और कार्यों को आउटपुट करता है <math>\mathbb{R}</math> से <math>\mathbb{R}</math>. प्रतीकों में, <math>h:\mathbb{R}\to\mathbb{R}^\mathbb{R}</math>, कहाँ पे <math>\mathbb{R}^\mathbb{R}</math>उन सभी कार्यों के सेट को दर्शाता है जो एक वास्तविक तर्क लेते हैं और वास्तविक आउटपुट उत्पन्न करते हैं। प्रत्येक वास्तविक संख्या के लिए <math>x</math>, फलन को परिभाषित करें <math>h_x : \mathbb{R}\to\mathbb{R}</math> द्वारा <math>h_x(y)=x+y^2</math>, और उसके बाद फलन को परिभाषित करें <math>h:\mathbb{R}\to\mathbb{R}^\mathbb{R}</math> द्वारा <math>h(x)=h_x</math>. तो उदाहरण के लिए, <math>h(2)</math> वह कार्य है जो अपना वास्तविक तर्क भेजता है <math>y</math> आउटपुट के लिए <math>2+y^2</math>, या <math>h(2)(y)=h_2(y)=2+y^2</math>. हम इसे सामान्य तौर पर देखते हैं | ||
:<math>h(x)(y)=x+y^2=f(x,y)</math> | :<math>h(x)(y)=x+y^2=f(x,y)</math> | ||
Line 46: | Line 48: | ||
== परिभाषा == | == परिभाषा == | ||
एक अनौपचारिक परिभाषा के साथ शुरू करके करी को सबसे आसानी से समझा जा सकता है, जिसे बाद में कई अलग-अलग डोमेन में फिट करने के लिए ढाला जा सकता है। सबसे पहले, स्थापित करने के लिए कुछ संकेतन है। अंकन <math>X \to Y </math> से सभी | एक अनौपचारिक परिभाषा के साथ शुरू करके करी को सबसे आसानी से समझा जा सकता है, जिसे बाद में कई अलग-अलग डोमेन में फिट करने के लिए ढाला जा सकता है। सबसे पहले, स्थापित करने के लिए कुछ संकेतन है। अंकन <math>X \to Y </math> से सभी फलन (गणित) को दर्शाता है <math>X</math> से <math>Y</math>. यदि <math>f</math> ऐसा एक कार्य है, हम लिखते हैं <math>f \colon X \to Y </math>. होने देना <math>X \times Y</math> के तत्वों के क्रमित जोड़े को निरूपित करें <math>X</math> तथा <math>Y</math> क्रमशः, अर्थात्, कार्टेशियन उत्पाद <math>X</math> तथा <math>Y</math>. यहां, <math>X</math> तथा <math>Y</math> सेट हो सकते हैं, या वे टाइप हो सकते हैं, या वे अन्य प्रकार के ऑब्जेक्ट हो सकते हैं, जैसा कि नीचे एक्सप्लोर किया गया है। | ||
एक | एक कलन दिया | ||
:<math>f \colon (X \times Y) \to Z </math>, | :<math>f \colon (X \times Y) \to Z </math>, | ||
Line 56: | Line 58: | ||
:<math>h \colon X \to (Y \to Z) </math>. | :<math>h \colon X \to (Y \to Z) </math>. | ||
वह है, <math>h </math> से तर्क लेता है <math>X</math> और एक | वह है, <math>h </math> से तर्क लेता है <math>X</math> और एक फलन देता है जो मैप करता है <math>Y</math> से <math>Z</math>. इसके द्वारा परिभाषित किया गया है | ||
:<math>h(x)(y)=f(x,y)</math> | :<math>h(x)(y)=f(x,y)</math> | ||
Line 62: | Line 64: | ||
:<math>\text{curry}(f)=h.</math> | :<math>\text{curry}(f)=h.</math> | ||
अनकरींग रिवर्स ट्रांसफ़ॉर्मेशन है, और इसके सही आसन्न, लागू | | अनकरींग रिवर्स ट्रांसफ़ॉर्मेशन है, और इसके सही आसन्न, लागू | फलन के संदर्भ में सबसे आसानी से समझा जाता है <math>\operatorname{apply}.</math> | ||
=== सेट सिद्धांत === | === सेट सिद्धांत === | ||
सेट सिद्धांत में, अंकन <math>Y^X</math> सेट से कार्यों के सेट (गणित) को निरूपित करने के लिए उपयोग किया जाता है <math>X</math> सेट पर <math>Y</math>. करी सेट के बीच [[प्राकृतिक समानता]] है <math>A^{B\times C}</math> से कार्यों की <math>B\times C</math> | सेट सिद्धांत में, अंकन <math>Y^X</math> सेट से कार्यों के सेट (गणित) को निरूपित करने के लिए उपयोग किया जाता है <math>X</math> सेट पर <math>Y</math>. करी सेट के बीच [[प्राकृतिक समानता]] है <math>A^{B\times C}</math> से कार्यों की <math>B\times C</math> से <math>A</math>, और सेट <math>(A^C)^B</math> से कार्यों की <math>B</math> कार्यों के सेट से <math>C</math> से <math>A</math>. प्रतीकों में: | ||
:<math>A^{B\times C}\cong (A^C)^B</math> | :<math>A^{B\times C}\cong (A^C)^B</math> | ||
Line 72: | Line 74: | ||
[[सेट की श्रेणी]] में, [[गणितीय वस्तु]] <math>Y^X</math> [[घातीय वस्तु]] कहा जाता है। | [[सेट की श्रेणी]] में, [[गणितीय वस्तु]] <math>Y^X</math> [[घातीय वस्तु]] कहा जाता है। | ||
=== | === कलन रिक्त स्थान === | ||
फलन रिक्त स्थान के सिद्धांत में, जैसे कि [[कार्यात्मक विश्लेषण]] या [[होमोटॉपी सिद्धांत]] में, आमतौर पर [[टोपोलॉजिकल स्पेस]] स्थान के बीच [[निरंतर कार्य]]ों में रुचि होती है। एक लिखता है <math>\text{Hom}(X,Y)</math> ([[मैं एक आदमी के रूप में काम करता हूं]]) से सभी कार्यों के सेट के लिए <math>X</math> से <math>Y</math>, और अंकन का उपयोग करता है <math>Y^X</math> निरंतर कार्यों के सबसेट को निरूपित करने के लिए। यहां, <math>\text{curry}</math> आक्षेप है | |||
:<math>\text{curry}:\text{Hom}(X\times Y, Z) \to \text{Hom}(X, \text{Hom}(Y,Z)) ,</math> | :<math>\text{curry}:\text{Hom}(X\times Y, Z) \to \text{Hom}(X, \text{Hom}(Y,Z)) ,</math> | ||
जबकि uncurrying उलटा नक्शा है। यदि सेट <math>Y^X</math> से निरंतर कार्यों की <math>X</math> | जबकि uncurrying उलटा नक्शा है। यदि सेट <math>Y^X</math> से निरंतर कार्यों की <math>X</math> से <math>Y</math> [[कॉम्पैक्ट-ओपन टोपोलॉजी]] दी जाती है, और यदि स्पेस <math>Y</math> तब [[स्थानीय रूप से कॉम्पैक्ट हौसडॉर्फ]] है | ||
:<math>\text{curry} : Z^{X\times Y}\to (Z^Y)^X</math> | :<math>\text{curry} : Z^{X\times Y}\to (Z^Y)^X</math> | ||
Line 84: | Line 86: | ||
<math>\begin{align} &&\text{eval}:Y^X \times X \to Y \\ | <math>\begin{align} &&\text{eval}:Y^X \times X \to Y \\ | ||
&& (f,x) \mapsto f(x) \end{align}</math> | && (f,x) \mapsto f(x) \end{align}</math> | ||
निरंतर है जब <math>Y^X</math> कॉम्पैक्ट-ओपन है और <math>Y</math> स्थानीय रूप से कॉम्पैक्ट हौसडॉर्फ।<ref name=rotman>Joseph J. Rotman, ''An Introduction to Algebraic Topology'' (1988) Springer-Verlag {{ISBN|0-387-96678-1}} ''(See Chapter 11 for proof.)''</ref> [[होमोटॉपी]] की निरंतरता को स्थापित करने के लिए ये दो परिणाम केंद्रीय हैं, अर्थात कब <math>X</math> इकाई अंतराल है <math>I</math>, ताकि <math>Z^{I\times Y} \cong (Z^Y)^I</math> या तो दो कार्यों के होमोटॉपी के रूप में सोचा जा सकता है <math>Y</math> | निरंतर है जब <math>Y^X</math> कॉम्पैक्ट-ओपन है और <math>Y</math> स्थानीय रूप से कॉम्पैक्ट हौसडॉर्फ।<ref name=rotman>Joseph J. Rotman, ''An Introduction to Algebraic Topology'' (1988) Springer-Verlag {{ISBN|0-387-96678-1}} ''(See Chapter 11 for proof.)''</ref> [[होमोटॉपी]] की निरंतरता को स्थापित करने के लिए ये दो परिणाम केंद्रीय हैं, अर्थात कब <math>X</math> इकाई अंतराल है <math>I</math>, ताकि <math>Z^{I\times Y} \cong (Z^Y)^I</math> या तो दो कार्यों के होमोटॉपी के रूप में सोचा जा सकता है <math>Y</math> से <math>Z</math>, या, समतुल्य, एक एकल (निरंतर) पथ <math>Z^Y</math>. | ||
=== [[बीजगणितीय टोपोलॉजी]] === | === [[बीजगणितीय टोपोलॉजी]] === | ||
Line 98: | Line 100: | ||
[[आदेश सिद्धांत]] में, अर्थात्, [[आंशिक रूप से आदेशित सेट]]ों के जाली (क्रम) का सिद्धांत, <math>\text{curry}</math> जाली को [[स्कॉट टोपोलॉजी]] दिए जाने पर एक सतत कार्य होता है।<ref>{{cite book |last1=Barendregt |first1=H.P. |author-link1=Henk Barendregt |title=लैम्ब्डा कैलकुलस|year=1984 |publisher=North-Holland |isbn=978-0-444-87508-2}} ''(See theorems 1.2.13, 1.2.14)''</ref> लैम्ब्डा कैलकुस के लिए शब्दार्थ प्रदान करने के प्रयास में स्कॉट-निरंतर कार्यों की पहली बार जांच की गई थी (जैसा कि सामान्य सेट सिद्धांत ऐसा करने के लिए अपर्याप्त है)। अधिक आम तौर पर, स्कॉट-निरंतर कार्यों का अध्ययन अब [[डोमेन सिद्धांत]] में किया जाता है, जिसमें कंप्यूटर एल्गोरिदम के [[सांकेतिक शब्दार्थ]] का अध्ययन शामिल है। ध्यान दें कि स्कॉट टोपोलॉजी [[टोपोलॉजिकल स्पेस की श्रेणी]] में आने वाली कई सामान्य टोपोलॉजी से काफी अलग है; स्कॉट टोपोलॉजी आमतौर पर [[अंतिम टोपोलॉजी]] है, और [[शांत स्थान]] नहीं है। | [[आदेश सिद्धांत]] में, अर्थात्, [[आंशिक रूप से आदेशित सेट]]ों के जाली (क्रम) का सिद्धांत, <math>\text{curry}</math> जाली को [[स्कॉट टोपोलॉजी]] दिए जाने पर एक सतत कार्य होता है।<ref>{{cite book |last1=Barendregt |first1=H.P. |author-link1=Henk Barendregt |title=लैम्ब्डा कैलकुलस|year=1984 |publisher=North-Holland |isbn=978-0-444-87508-2}} ''(See theorems 1.2.13, 1.2.14)''</ref> लैम्ब्डा कैलकुस के लिए शब्दार्थ प्रदान करने के प्रयास में स्कॉट-निरंतर कार्यों की पहली बार जांच की गई थी (जैसा कि सामान्य सेट सिद्धांत ऐसा करने के लिए अपर्याप्त है)। अधिक आम तौर पर, स्कॉट-निरंतर कार्यों का अध्ययन अब [[डोमेन सिद्धांत]] में किया जाता है, जिसमें कंप्यूटर एल्गोरिदम के [[सांकेतिक शब्दार्थ]] का अध्ययन शामिल है। ध्यान दें कि स्कॉट टोपोलॉजी [[टोपोलॉजिकल स्पेस की श्रेणी]] में आने वाली कई सामान्य टोपोलॉजी से काफी अलग है; स्कॉट टोपोलॉजी आमतौर पर [[अंतिम टोपोलॉजी]] है, और [[शांत स्थान]] नहीं है। | ||
निरंतरता की धारणा होमोटोपी प्रकार के सिद्धांत में प्रकट होती है, जहां, मोटे तौर पर बोलना, दो कंप्यूटर प्रोग्रामों को होमोटोपिक माना जा सकता है, अर्थात समान परिणामों की गणना करें, यदि वे एक से दूसरे में लगातार [[कोड रीफैक्टरिंग]] कर सकते हैं। | निरंतरता की धारणा होमोटोपी प्रकार के सिद्धांत में प्रकट होती है, जहां, मोटे तौर पर बोलना, दो कंप्यूटर प्रोग्रामों को होमोटोपिक माना जा सकता है, अर्थात समान परिणामों की गणना करें, यदि वे एक से दूसरे में लगातार [[कोड रीफैक्टरिंग|संकेत रीफैक्टरिंग]] कर सकते हैं। | ||
=== लैम्ब्डा गणना === | === लैम्ब्डा गणना === | ||
सैद्धांतिक कंप्यूटर विज्ञान में, करींग लैम्ब्डा कैलकुस जैसे बहुत ही सरल सैद्धांतिक मॉडल में कई तर्कों के साथ कार्यों का अध्ययन करने का एक | सैद्धांतिक कंप्यूटर विज्ञान में, करींग लैम्ब्डा कैलकुस जैसे बहुत ही सरल सैद्धांतिक मॉडल में कई तर्कों के साथ कार्यों का अध्ययन करने का एक विधि प्रदान करता है, जिसमें कार्य केवल एक तर्क लेते हैं। एक कलन पर विचार करें <math>f(x,y)</math> दो तर्क लेना, और प्रकार रखना <math>(X \times Y)\to Z</math>, जिसका अर्थ यह समझा जाना चाहिए कि x का प्रकार होना चाहिए <math>X</math>, y का प्रकार होना चाहिए <math>Y</math>, और फलन स्वयं प्रकार लौटाता है <math>Z</math>. F के कढ़ी रूप को परिभाषित किया गया है | ||
:<math>\text{curry}(f) = \lambda x.(\lambda y.(f(x,y)))</math> | :<math>\text{curry}(f) = \lambda x.(\lambda y.(f(x,y)))</math> | ||
Line 107: | Line 109: | ||
:<math>\text{curry}:((X \times Y)\to Z) \to (X \to (Y \to Z))</math> | :<math>\text{curry}:((X \times Y)\to Z) \to (X \to (Y \to Z))</math> | ||
→ ऑपरेटर को अक्सर [[सही सहयोगी]] माना जाता है, इसलिए करी | → ऑपरेटर को अक्सर [[सही सहयोगी]] माना जाता है, इसलिए करी फलन प्रकार <math>X \to (Y \to Z)</math> अक्सर के रूप में लिखा जाता है <math>X \to Y \to Z</math>. इसके विपरीत, [[समारोह आवेदन|कलन आवेदन]] को ऑपरेटर सहयोगीता माना जाता है | बाएं-सहयोगी, ताकि <math>f(x, y)</math> के बराबर है | ||
:<math>((\text{curry}(f) \; x) \;y) = \text{curry}(f) \; x \;y</math>. | :<math>((\text{curry}(f) \; x) \;y) = \text{curry}(f) \; x \;y</math>. | ||
Line 113: | Line 115: | ||
यही है, आवेदन के क्रम को स्पष्ट करने के लिए कोष्ठक की आवश्यकता नहीं है। | यही है, आवेदन के क्रम को स्पष्ट करने के लिए कोष्ठक की आवश्यकता नहीं है। | ||
करीबी कार्यों का उपयोग किसी भी प्रोग्रामिंग भाषा में किया जा सकता है जो क्लोजर (कंप्यूटर विज्ञान) का समर्थन करता है; हालांकि, अनिश्चित कार्यों को आम तौर पर दक्षता कारणों से पसंद किया जाता है, क्योंकि आंशिक अनुप्रयोग के ऊपरी हिस्से और बंद करने के निर्माण को अधिकांश | करीबी कार्यों का उपयोग किसी भी प्रोग्रामिंग भाषा में किया जा सकता है जो क्लोजर (कंप्यूटर विज्ञान) का समर्थन करता है; हालांकि, अनिश्चित कार्यों को आम तौर पर दक्षता कारणों से पसंद किया जाता है, क्योंकि आंशिक अनुप्रयोग के ऊपरी हिस्से और बंद करने के निर्माण को अधिकांश फलन कॉलों के लिए टाला जा सकता है। | ||
=== [[प्रकार सिद्धांत]] === | === [[प्रकार सिद्धांत]] === | ||
प्रकार के सिद्धांत में, कंप्यूटर विज्ञान में एक प्रकार की प्रणाली के सामान्य विचार को एक विशिष्ट बीजगणित के प्रकारों में औपचारिक रूप दिया जाता है। उदाहरण के लिए, लिखते समय <math>f \colon X \to Y </math>, आशय यह है <math>X</math> तथा <math>Y</math> टाइप सिस्टम हैं, जबकि एरो <math>\to</math> एक प्रकार [[कंस्ट्रक्टर टाइप करें]] है, विशेष रूप से, | प्रकार के सिद्धांत में, कंप्यूटर विज्ञान में एक प्रकार की प्रणाली के सामान्य विचार को एक विशिष्ट बीजगणित के प्रकारों में औपचारिक रूप दिया जाता है। उदाहरण के लिए, लिखते समय <math>f \colon X \to Y </math>, आशय यह है <math>X</math> तथा <math>Y</math> टाइप सिस्टम हैं, जबकि एरो <math>\to</math> एक प्रकार [[कंस्ट्रक्टर टाइप करें]] है, विशेष रूप से, फलन प्रकार या तीर प्रकार। इसी तरह, कार्टेशियन उत्पाद <math>X \times Y</math> प्रकार का निर्माण [[उत्पाद प्रकार]] कन्स्ट्रक्टर द्वारा किया जाता है <math>\times</math>. | ||
प्रकार-सैद्धांतिक दृष्टिकोण प्रोग्रामिंग भाषाओं जैसे एमएल (प्रोग्रामिंग भाषा) और उससे प्राप्त और प्रेरित भाषाओं में व्यक्त किया गया है: [[सीएएमएल]], हास्केल (प्रोग्रामिंग भाषा) और एफ शार्प (प्रोग्रामिंग भाषा) | एफ #। | प्रकार-सैद्धांतिक दृष्टिकोण प्रोग्रामिंग भाषाओं जैसे एमएल (प्रोग्रामिंग भाषा) और उससे प्राप्त और प्रेरित भाषाओं में व्यक्त किया गया है: [[सीएएमएल]], हास्केल (प्रोग्रामिंग भाषा) और एफ शार्प (प्रोग्रामिंग भाषा) | एफ #। | ||
Line 123: | Line 125: | ||
=== तर्क === | === तर्क === | ||
करी-हावर्ड पत्राचार के तहत, करी और अनकरींग का अस्तित्व तार्किक प्रमेय के बराबर है <math>(A \land B) \to C \Leftrightarrow A \to (B \to C)</math>, क्योंकि टुपल्स (उत्पाद प्रकार) तर्क में संयोजन से मेल खाता है, और | करी-हावर्ड पत्राचार के तहत, करी और अनकरींग का अस्तित्व तार्किक प्रमेय के बराबर है <math>(A \land B) \to C \Leftrightarrow A \to (B \to C)</math>, क्योंकि टुपल्स (उत्पाद प्रकार) तर्क में संयोजन से मेल खाता है, और फलन प्रकार निहितार्थ से मेल खाता है। | ||
घातीय वस्तु <math>Q^P</math> [[Heyting algebra]]s की श्रेणी में सामान्य रूप से [[सामग्री सशर्त]] के रूप में लिखा जाता है <math>P\to Q</math>. वितरण हेटिंग बीजगणित [[बूलियन बीजगणित]] हैं, और घातीय वस्तु का स्पष्ट रूप है <math>\neg P \lor Q</math>, इस प्रकार यह स्पष्ट करता है कि घातीय वस्तु वास्तव में भौतिक निहितार्थ (अनुमान का नियम) है।<ref>Saunders Mac Lane and Ieke Moerdijk, ''Sheaves in Geometry and Logic'' (1992) Springer {{ISBN|0-387-97710-4}} (''See Chapter 1, pp.48-57'')</ref> | घातीय वस्तु <math>Q^P</math> [[Heyting algebra]]s की श्रेणी में सामान्य रूप से [[सामग्री सशर्त]] के रूप में लिखा जाता है <math>P\to Q</math>. वितरण हेटिंग बीजगणित [[बूलियन बीजगणित]] हैं, और घातीय वस्तु का स्पष्ट रूप है <math>\neg P \lor Q</math>, इस प्रकार यह स्पष्ट करता है कि घातीय वस्तु वास्तव में भौतिक निहितार्थ (अनुमान का नियम) है।<ref>Saunders Mac Lane and Ieke Moerdijk, ''Sheaves in Geometry and Logic'' (1992) Springer {{ISBN|0-387-97710-4}} (''See Chapter 1, pp.48-57'')</ref> | ||
Line 136: | Line 138: | ||
यहाँ, होम श्रेणी में सभी morphisms के (बाहरी) होम-फ़ंक्टर को दर्शाता है, जबकि <math>B\Rightarrow C</math> बंद monoidal श्रेणी में आंतरिक होम functor को दर्शाता है। समुच्चयों की श्रेणी के लिए, दोनों समान हैं। जब उत्पाद कार्तीय उत्पाद है, तो आंतरिक होम <math>B\Rightarrow C</math> घातीय वस्तु बन जाती है <math>C^B</math>. | यहाँ, होम श्रेणी में सभी morphisms के (बाहरी) होम-फ़ंक्टर को दर्शाता है, जबकि <math>B\Rightarrow C</math> बंद monoidal श्रेणी में आंतरिक होम functor को दर्शाता है। समुच्चयों की श्रेणी के लिए, दोनों समान हैं। जब उत्पाद कार्तीय उत्पाद है, तो आंतरिक होम <math>B\Rightarrow C</math> घातीय वस्तु बन जाती है <math>C^B</math>. | ||
करी दो तरह से टूट सकती है। एक यह है कि यदि कोई श्रेणी [[बंद श्रेणी]] नहीं है, और इस प्रकार एक आंतरिक होम फ़ैक्टर की कमी है (संभवतः क्योंकि इस तरह के फ़ैक्टर के लिए एक से अधिक विकल्प हैं)। दूसरा | करी दो तरह से टूट सकती है। एक यह है कि यदि कोई श्रेणी [[बंद श्रेणी]] नहीं है, और इस प्रकार एक आंतरिक होम फ़ैक्टर की कमी है (संभवतः क्योंकि इस तरह के फ़ैक्टर के लिए एक से अधिक विकल्प हैं)। दूसरा विधि यह है कि यदि यह मोनोइडल श्रेणी नहीं है, और इस प्रकार एक उत्पाद की कमी है (अर्थात, वस्तुओं के जोड़े को लिखने का एक विधि नहीं है)। जिन श्रेणियों में उत्पाद और आंतरिक होम दोनों होते हैं, वे बिल्कुल बंद मोनोइडल श्रेणियां हैं। | ||
[[शास्त्रीय तर्क]] की चर्चा के लिए कार्टेशियन बंद श्रेणियों की सेटिंग पर्याप्त है; बंद मोनोइडल श्रेणियों की अधिक सामान्य सेटिंग क्वांटम संगणना के लिए उपयुक्त है।<ref>Samson Abramsky and Bob Coecke, "[https://arxiv.org/abs/quantph/0402130/ A Categorical Semantics for Quantum Protocols]."</ref> | [[शास्त्रीय तर्क]] की चर्चा के लिए कार्टेशियन बंद श्रेणियों की सेटिंग पर्याप्त है; बंद मोनोइडल श्रेणियों की अधिक सामान्य सेटिंग क्वांटम संगणना के लिए उपयुक्त है।<ref>Samson Abramsky and Bob Coecke, "[https://arxiv.org/abs/quantph/0402130/ A Categorical Semantics for Quantum Protocols]."</ref> | ||
Line 143: | Line 145: | ||
इसके विपरीत, मोनोइडल श्रेणी के लिए उत्पाद (जैसे [[हिल्बर्ट अंतरिक्ष]] और कार्यात्मक विश्लेषण के वेक्टर रिक्त स्थान) टेंसर उत्पाद है। ऐसी श्रेणियों की आंतरिक भाषा रेखीय तर्क है, जो [[क्वांटम तर्क]] का एक रूप है; इसी प्रकार की प्रणाली रैखिक प्रकार की प्रणाली है। ऐसी श्रेणियां उलझी हुई क्वांटम अवस्थाओं का वर्णन करने के लिए उपयुक्त हैं, और, अधिक आम तौर पर, करी-हावर्ड पत्राचार को [[क्वांटम यांत्रिकी]], बीजगणितीय टोपोलॉजी में [[coboardism]] और [[स्ट्रिंग सिद्धांत]] के लिए एक विशाल सामान्यीकरण की अनुमति देती हैं।<ref name="rosetta">John C. Baez and Mike Stay, "[http://math.ucr.edu/home/baez/rosetta/rose3.pdf Physics, Topology, Logic and Computation: A Rosetta Stone]", (2009) [https://arxiv.org/abs/0903.0340/ ArXiv 0903.0340] in ''New Structures for Physics'', ed. Bob Coecke, ''Lecture Notes in Physics'' vol. '''813''', Springer, Berlin, 2011, pp. 95-174.</ref> रेखीय प्रकार प्रणाली, और रेखीय तर्क [[तुल्यकालन आदिम]]ों का वर्णन करने के लिए उपयोगी होते हैं, जैसे पारस्परिक बहिष्करण ताले, और वेंडिंग मशीनों का संचालन। | इसके विपरीत, मोनोइडल श्रेणी के लिए उत्पाद (जैसे [[हिल्बर्ट अंतरिक्ष]] और कार्यात्मक विश्लेषण के वेक्टर रिक्त स्थान) टेंसर उत्पाद है। ऐसी श्रेणियों की आंतरिक भाषा रेखीय तर्क है, जो [[क्वांटम तर्क]] का एक रूप है; इसी प्रकार की प्रणाली रैखिक प्रकार की प्रणाली है। ऐसी श्रेणियां उलझी हुई क्वांटम अवस्थाओं का वर्णन करने के लिए उपयुक्त हैं, और, अधिक आम तौर पर, करी-हावर्ड पत्राचार को [[क्वांटम यांत्रिकी]], बीजगणितीय टोपोलॉजी में [[coboardism]] और [[स्ट्रिंग सिद्धांत]] के लिए एक विशाल सामान्यीकरण की अनुमति देती हैं।<ref name="rosetta">John C. Baez and Mike Stay, "[http://math.ucr.edu/home/baez/rosetta/rose3.pdf Physics, Topology, Logic and Computation: A Rosetta Stone]", (2009) [https://arxiv.org/abs/0903.0340/ ArXiv 0903.0340] in ''New Structures for Physics'', ed. Bob Coecke, ''Lecture Notes in Physics'' vol. '''813''', Springer, Berlin, 2011, pp. 95-174.</ref> रेखीय प्रकार प्रणाली, और रेखीय तर्क [[तुल्यकालन आदिम]]ों का वर्णन करने के लिए उपयोगी होते हैं, जैसे पारस्परिक बहिष्करण ताले, और वेंडिंग मशीनों का संचालन। | ||
== आंशिक | == आंशिक फलन एप्लिकेशन == के साथ तुलना करें | ||
{{main article|Partial application}} | {{main article|Partial application}} | ||
करी और आंशिक कार्य अनुप्रयोग अक्सर मिश्रित होते हैं।<ref>{{cite web|url=http://www.uncarved.com/articles/not_currying|archive-url=https://web.archive.org/web/20161023205431/http://www.uncarved.com/articles/not_currying|url-status=dead|archive-date=2016-10-23|title=द अनकार्व्ड ब्लॉग: आंशिक कार्य अनुप्रयोग करी नहीं है|work=uncarved.com}}</ref> दोनों के बीच महत्वपूर्ण अंतरों में से एक यह है कि आंशिक रूप से लागू किए गए | करी और आंशिक कार्य अनुप्रयोग अक्सर मिश्रित होते हैं।<ref>{{cite web|url=http://www.uncarved.com/articles/not_currying|archive-url=https://web.archive.org/web/20161023205431/http://www.uncarved.com/articles/not_currying|url-status=dead|archive-date=2016-10-23|title=द अनकार्व्ड ब्लॉग: आंशिक कार्य अनुप्रयोग करी नहीं है|work=uncarved.com}}</ref> दोनों के बीच महत्वपूर्ण अंतरों में से एक यह है कि आंशिक रूप से लागू किए गए फलन के लिए कॉल तुरंत परिणाम देता है, करींग श्रृंखला के नीचे कोई अन्य फलन नहीं; इस भेद को उन कार्यों के लिए स्पष्ट रूप से चित्रित किया जा सकता है जिनकी संख्या दो से अधिक है।<ref>{{cite web|url=http://slid.es/gsklee/functional-programming-in-5-minutes|title=5 मिनट में कार्यात्मक प्रोग्रामिंग|work=Slides}}</ref> | ||
प्रकार का एक कार्य दिया <math>f \colon (X \times Y \times Z) \to N </math>, करी पैदा करता है <math>\text{curry}(f) \colon X \to (Y \to (Z \to N)) </math>. यही है, जबकि पहले | प्रकार का एक कार्य दिया <math>f \colon (X \times Y \times Z) \to N </math>, करी पैदा करता है <math>\text{curry}(f) \colon X \to (Y \to (Z \to N)) </math>. यही है, जबकि पहले फलन का मूल्यांकन इस रूप में प्रदर्शित किया जा सकता है <math>f(1, 2, 3)</math>, करीबी कलन के मूल्यांकन के रूप में प्रतिनिधित्व किया जाएगा <math>f_\text{curried}(1)(2)(3)</math>, प्रत्येक तर्क को पिछले मंगलाचरण द्वारा लौटाए गए एकल-तर्क फलन के बदले में लागू करना। ध्यान दें कि कॉल करने के बाद <math>f_\text{curried}(1)</math>, हम एक ऐसे फलन के साथ बचे हैं जो एक तर्क लेता है और दूसरा फलन देता है, न कि एक ऐसा फलन जो दो तर्क लेता है। | ||
इसके विपरीत, आंशिक | इसके विपरीत, आंशिक फलन एप्लिकेशन एक फलन के लिए कई तर्कों को ठीक करने की प्रक्रिया को संदर्भित करता है, जो कि छोटे arity के दूसरे फलन का निर्माण करता है। की परिभाषा दी <math>f</math> ऊपर, हम पहले तर्क को ठीक (या 'बाइंड') कर सकते हैं, जिससे एक प्रकार का फलन तैयार होता है <math>\text{partial}(f) \colon (Y \times Z) \to N</math>. इस कलन के मूल्यांकन के रूप में प्रतिनिधित्व किया जा सकता है <math>f_\text{partial}(2, 3)</math>. ध्यान दें कि इस मामले में आंशिक फलन एप्लिकेशन का परिणाम एक ऐसा फलन है जो दो तर्क लेता है। | ||
सहज रूप से, आंशिक | सहज रूप से, आंशिक फलन एप्लिकेशन कहता है कि यदि आप फलन के पहले पैरामीटर (कंप्यूटर विज्ञान) को ठीक करते हैं, तो आपको शेष तर्कों का एक फलन मिलता है। उदाहरण के लिए, यदि फलन div डिवीजन ऑपरेशन x/y के लिए खड़ा है, तो पैरामीटर x के साथ div 1 पर तय किया गया है (यानी, div 1) एक और फलन है: फलन inv के समान जो इसके तर्क के गुणात्मक व्युत्क्रम को परिभाषित करता है, परिभाषित आमंत्रण द्वारा (y) = 1/y. | ||
आंशिक अनुप्रयोग के लिए व्यावहारिक अभिप्रेरणा यह है कि बहुत बार किसी फलन के लिए सभी नहीं बल्कि कुछ तर्क देकर प्राप्त किए गए फलन उपयोगी होते हैं; उदाहरण के लिए, कई भाषाओं में समान कार्य या संचालिका होती है <code>plus_one</code>. आंशिक अनुप्रयोग इन कार्यों को परिभाषित करना आसान बनाता है, उदाहरण के लिए एक | आंशिक अनुप्रयोग के लिए व्यावहारिक अभिप्रेरणा यह है कि बहुत बार किसी फलन के लिए सभी नहीं बल्कि कुछ तर्क देकर प्राप्त किए गए फलन उपयोगी होते हैं; उदाहरण के लिए, कई भाषाओं में समान कार्य या संचालिका होती है <code>plus_one</code>. आंशिक अनुप्रयोग इन कार्यों को परिभाषित करना आसान बनाता है, उदाहरण के लिए एक फलन बनाकर जो इसके पहले तर्क के रूप में 1 बाउंड के साथ अतिरिक्त ऑपरेटर का प्रतिनिधित्व करता है। | ||
आंशिक अनुप्रयोग को एक निश्चित बिंदु पर एक निश्चित कार्य के मूल्यांकन के रूप में देखा जा सकता है, उदा। दिया गया <math>f \colon (X \times Y \times Z) \to N </math> तथा <math>a \in X</math> फिर <math>\text{curry}(\text{partial}(f)_a)(y)(z) = \text{curry}(f)(a)(y)(z) </math> या केवल <math>\text{partial}(f)_a = \text{curry}_1(f)(a) </math> कहाँ पे <math>\text{curry}_1</math> करी एफ का पहला पैरामीटर। | आंशिक अनुप्रयोग को एक निश्चित बिंदु पर एक निश्चित कार्य के मूल्यांकन के रूप में देखा जा सकता है, उदा। दिया गया <math>f \colon (X \times Y \times Z) \to N </math> तथा <math>a \in X</math> फिर <math>\text{curry}(\text{partial}(f)_a)(y)(z) = \text{curry}(f)(a)(y)(z) </math> या केवल <math>\text{partial}(f)_a = \text{curry}_1(f)(a) </math> कहाँ पे <math>\text{curry}_1</math> करी एफ का पहला पैरामीटर। | ||
इस प्रकार, आंशिक अनुप्रयोग एक निश्चित बिंदु पर एक करीबी | इस प्रकार, आंशिक अनुप्रयोग एक निश्चित बिंदु पर एक करीबी कलन में कम हो जाता है। इसके अलावा, एक निश्चित बिंदु पर एक घुमावदार कार्य (तुच्छ रूप से), एक आंशिक अनुप्रयोग है। अधिक साक्ष्य के लिए, ध्यान दें कि, कोई भी कार्य दिया गया है <math>f(x,y)</math>, एक कलन <math>g(y,x)</math> इस प्रकार परिभाषित किया जा सकता है <math>g(y,x) = f(x,y)</math>. इस प्रकार, किसी भी आंशिक आवेदन को एक करी ऑपरेशन में घटाया जा सकता है। जैसे, करी को एक ऑपरेशन के रूप में अधिक उपयुक्त रूप से परिभाषित किया गया है, जो कई सैद्धांतिक मामलों में, अक्सर पुनरावर्ती रूप से लागू होता है, लेकिन जो सैद्धांतिक रूप से अप्रभेद्य है (जब एक ऑपरेशन के रूप में माना जाता है) आंशिक आवेदन से। | ||
तो, एक आंशिक अनुप्रयोग को कुछ | तो, एक आंशिक अनुप्रयोग को कुछ फलन के इनपुट के कुछ क्रम पर करी ऑपरेटर के एकल अनुप्रयोग के उद्देश्य परिणाम के रूप में परिभाषित किया जा सकता है। | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 190: | Line 192: | ||
*अंक शास्त्र | *अंक शास्त्र | ||
* | *कलन (गणित) | ||
*आंशिक आवेदन | *आंशिक आवेदन | ||
*लैम्ब्डा कैलकुलस | *लैम्ब्डा कैलकुलस | ||
Line 197: | Line 199: | ||
*कार्तीय गुणन | *कार्तीय गुणन | ||
*समुच्चय सिद्धान्त | *समुच्चय सिद्धान्त | ||
* | *कलन स्थान | ||
*द्विभाजन | *द्विभाजन | ||
*अगर और केवल अगर | *अगर और केवल अगर | ||
Line 211: | Line 213: | ||
*क्लोजर (कंप्यूटर साइंस) | *क्लोजर (कंप्यूटर साइंस) | ||
*प्रकार प्रणाली | *प्रकार प्रणाली | ||
* | *कलन प्रकार | ||
*सरल रूप से टाइप किया हुआ लैम्ब्डा कैलकुलस | *सरल रूप से टाइप किया हुआ लैम्ब्डा कैलकुलस | ||
*मोनोइडल श्रेणियां | *मोनोइडल श्रेणियां |
Revision as of 14:40, 16 December 2022
गणित और कंप्यूटर विज्ञान में, करींग एक के मूल्यांकन का अनुवाद करने की विधि है जो कार्यों के अनुक्रम (कंप्यूटर विज्ञान) का मूल्यांकन करने में कई तर्क लेता है, प्रत्येक एक तर्क के साथ। उदाहरण के लिए, एक कलन जो तीन तर्क लेता है, एक स्थिर एकल फलन बनाता है, ताकि संकेत
संकेत के समान मान देता है
या क्रम में कहा जाता है,
गणितीय भाषा में अधिकतर, एक फलन जो दो तर्क लेता है, एक से और दूसरे से , और में आउटपुट उत्पन्न करता है करीइंग द्वारा एक फलन में अनुवादित किया जाता है जो से एकल तर्क लेता है और से तक आउटपुट फ़ंक्शन के रूप में उत्पन्न करता है। यह इन दो प्रकार के कार्यों के बीच एक स्वाभाविक एक-से-एक पत्राचार है, जिससे कि सेट (गणित) उनके बीच के कार्यों के साथ एक कार्तीय बंद श्रेणी बनाते हैं। दो से अधिक तर्कों वाले फलन की करी को तब प्रेरण द्वारा परिभाषित किया जा सकता है। करी संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है।
करी करना व्यावहारिक और सैद्धांतिक दोनों स्थितियों में उपयोगी है। कार्यात्मक प्रोग्रामिंग भाषाओं और कई अन्य भाषाओं में, यह स्वचालित रूप से प्रबंधित करने का एक विधि प्रदान करता है कि फलन और अपवादों के लिए तर्क कैसे पास किए जाते हैं। सैद्धांतिक कंप्यूटर विज्ञान में, यह सरल सैद्धांतिक मॉडल में कई तर्कों के साथ कार्यों का अध्ययन करने का एक विधि प्रदान करता है जो केवल एक तर्क प्रदान करता है। करी और अनकरींग की सख्त धारणा के लिए सबसे सामान्य सेटिंग बंद मोनोइडल श्रेणी में है, जो क्वांटम यांत्रिकी, कोबोर्डिज्म और स्ट्रिंग सिद्धांत सहित कई अन्य संरचनाओं के साथ पत्राचार के लिए करी-हावर्ड पत्राचार के सबूत और कार्यक्रमों के विशाल सामान्यीकरण को रेखांकित करता है। .[1] यह गोटलॉब फ्रेज द्वारा प्रस्तुत किया गया था,[2][3] मूसा शॉनफिंकेल द्वारा विकसित,[3][4][5][6]
और आगे हास्केल करी द्वारा विकसित किया गया।[7][8]
अनकरींग द्वैत (गणित) को करी करने के लिए परिवर्तन है, और इसे निष्क्रियता के एक रूप के रूप में देखा जा सकता है। यह एक फलन (गणित) लेता है जिसका रिटर्न वैल्यू एक और फंक्शन है, और एक नया फलन उत्पन्न करता है जो पैरामीटर के रूप में दोनों के लिए तर्क लेता है, और परिणामस्वरूप उन तर्कों के लिए और बाद में,,का अनुप्रयोग करता है। और इस प्रक्रिया को पुनरावृत्त किया जा सकता है।
प्रेरणा
करींग उन कार्यों के साथ काम करने का एक विधि प्रदान करता है जो कई तर्क लेते हैं, और उन्हें ढांचे में उपयोग करते हैं जहां कार्य केवल एक तर्क ले सकते हैं। उदाहरण के लिए, कुछ #Definition केवल एक तर्क के साथ फलन (गणित) पर लागू किए जा सकते हैं। व्यावहारिक कार्य अक्सर इससे अधिक तर्क लेते हैं। गोटलॉब फ्रेग ने दिखाया कि यह एकल तर्क मामले के लिए समाधान प्रदान करने के लिए पर्याप्त था, क्योंकि एक फलन को कई तर्कों के साथ एकल-तर्क कार्यों की श्रृंखला में बदलना संभव था। यह परिवर्तन अब करी के रूप में जानी जाने वाली प्रक्रिया है।[9] गणितीय विश्लेषण या कंप्यूटर प्रोग्रामिंग में आम तौर पर सामने आने वाले सभी सामान्य कार्यों को नियंत्रित किया जा सकता है। हालांकि, ऐसी श्रेणियां हैं जिनमें करी बनाना संभव नहीं है; करीने की अनुमति देने वाली सबसे सामान्य श्रेणियां बंद मोनोइडल श्रेणी हैं।
कुछ प्रोग्रामिंग लैंग्वेज लगभग हमेशा कई तर्कों को प्राप्त करने के लिए करीबी कार्यों का उपयोग करती हैं; उल्लेखनीय उदाहरण [[एमएल (प्रोग्रामिंग भाषा)]] और हास्केल (प्रोग्रामिंग भाषा) हैं, जहां दोनों मामलों में सभी कार्यों में बिल्कुल एक तर्क होता है। यह संपत्ति लैम्ब्डा कैलकुस से विरासत में मिली है, जहां बहु-तर्क कार्यों को आम तौर पर घुमावदार रूप में दर्शाया जाता है।
करी संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है। अभ्यास में, क्लोजर (कंप्यूटर प्रोग्रामिंग) की प्रोग्रामिंग विधि का उपयोग आंशिक अनुप्रयोग और एक प्रकार की करींग करने के लिए किया जा सकता है, जो करी फलन के साथ यात्रा करने वाले वातावरण में तर्क छिपाकर करता है।
चित्रण
मान लीजिए हमारे पास एक कलन है जो दो वास्तविक संख्या लेता है () तर्क और वास्तविक संख्या को आउटपुट करता है, और इसके द्वारा परिभाषित किया जाता है . करींग इसे एक कलन में अनुवादित करता है जो एक वास्तविक तर्क लेता है और कार्यों को आउटपुट करता है से . प्रतीकों में, , कहाँ पे उन सभी कार्यों के सेट को दर्शाता है जो एक वास्तविक तर्क लेते हैं और वास्तविक आउटपुट उत्पन्न करते हैं। प्रत्येक वास्तविक संख्या के लिए , फलन को परिभाषित करें द्वारा , और उसके बाद फलन को परिभाषित करें द्वारा . तो उदाहरण के लिए, वह कार्य है जो अपना वास्तविक तर्क भेजता है आउटपुट के लिए , या . हम इसे सामान्य तौर पर देखते हैं
ताकि मूल कार्य और इसकी करी बिल्कुल वही जानकारी दें। ऐसी स्थिति में हम लिखते भी हैं
यह दो से अधिक तर्कों वाले कार्यों के लिए भी काम करता है। यदि तीन तर्कों का एक कार्य था , इसकी करी संपत्ति होगी
इतिहास
करी में करी तर्कशास्त्री हास्केल करी का एक संदर्भ है, जिन्होंने इस अवधारणा का व्यापक रूप से उपयोग किया था, लेकिन करी से 6 साल पहले मूसा शॉनफिंकेल का विचार था।[10] वैकल्पिक नाम Schonfinkelisation प्रस्तावित किया गया है।[11] गणितीय संदर्भ में, सिद्धांत को 1893 में गोटलॉब फ्रेज द्वारा काम पर वापस खोजा जा सकता है।[2][3]
करींग शब्द का जनक स्पष्ट नहीं है। डेविड टर्नर (कंप्यूटर वैज्ञानिक) का कहना है कि यह शब्द क्रिस्टोफर स्ट्रेची द्वारा अपने 1967 के व्याख्यान नोट्स में मौलिक अवधारणाओं को प्रोग्रामिंग भाषाओं में गढ़ा गया था।[12] लेकिन यद्यपि अवधारणा का उल्लेख किया गया है, नोटों में करी शब्द प्रकट नहीं होता है।[4]जॉन सी रेनॉल्ड्स ने 1972 के पेपर में करी को परिभाषित किया, लेकिन इस शब्द को गढ़ने का दावा नहीं किया।[5]
परिभाषा
एक अनौपचारिक परिभाषा के साथ शुरू करके करी को सबसे आसानी से समझा जा सकता है, जिसे बाद में कई अलग-अलग डोमेन में फिट करने के लिए ढाला जा सकता है। सबसे पहले, स्थापित करने के लिए कुछ संकेतन है। अंकन से सभी फलन (गणित) को दर्शाता है से . यदि ऐसा एक कार्य है, हम लिखते हैं . होने देना के तत्वों के क्रमित जोड़े को निरूपित करें तथा क्रमशः, अर्थात्, कार्टेशियन उत्पाद तथा . यहां, तथा सेट हो सकते हैं, या वे टाइप हो सकते हैं, या वे अन्य प्रकार के ऑब्जेक्ट हो सकते हैं, जैसा कि नीचे एक्सप्लोर किया गया है।
एक कलन दिया
- ,
करी एक नया कार्य बनाता है
- .
वह है, से तर्क लेता है और एक फलन देता है जो मैप करता है से . इसके द्वारा परिभाषित किया गया है
के लिये से तथा से . फिर हम भी लिखते हैं
अनकरींग रिवर्स ट्रांसफ़ॉर्मेशन है, और इसके सही आसन्न, लागू | फलन के संदर्भ में सबसे आसानी से समझा जाता है
सेट सिद्धांत
सेट सिद्धांत में, अंकन सेट से कार्यों के सेट (गणित) को निरूपित करने के लिए उपयोग किया जाता है सेट पर . करी सेट के बीच प्राकृतिक समानता है से कार्यों की से , और सेट से कार्यों की कार्यों के सेट से से . प्रतीकों में:
वास्तव में, यह प्राकृतिक आपत्ति है जो कार्यों के सेट के लिए घातीय संकेतन को सही ठहराती है। जैसा कि करीने के सभी उदाहरणों में होता है, ऊपर दिया गया सूत्र एक सहायक कारक का वर्णन करता है: प्रत्येक निश्चित सेट के लिए , काम करनेवाला functor के पास छोड़ दिया जाता है .
सेट की श्रेणी में, गणितीय वस्तु घातीय वस्तु कहा जाता है।
कलन रिक्त स्थान
फलन रिक्त स्थान के सिद्धांत में, जैसे कि कार्यात्मक विश्लेषण या होमोटॉपी सिद्धांत में, आमतौर पर टोपोलॉजिकल स्पेस स्थान के बीच निरंतर कार्यों में रुचि होती है। एक लिखता है (मैं एक आदमी के रूप में काम करता हूं) से सभी कार्यों के सेट के लिए से , और अंकन का उपयोग करता है निरंतर कार्यों के सबसेट को निरूपित करने के लिए। यहां, आक्षेप है
जबकि uncurrying उलटा नक्शा है। यदि सेट से निरंतर कार्यों की से कॉम्पैक्ट-ओपन टोपोलॉजी दी जाती है, और यदि स्पेस तब स्थानीय रूप से कॉम्पैक्ट हौसडॉर्फ है
एक होमियोमोर्फिज्म है। ऐसा तब भी होता है जब , तथा कॉम्पैक्ट रूप से उत्पन्न स्थान हैं,[13]: chapter 5 [14] जबकि और भी मामले हैं।[15][16] एक उपयोगी उपप्रमेय यह है कि एक फलन निरंतर होता है यदि और केवल यदि इसका करीड रूप निरंतर हो। एक अन्य महत्वपूर्ण परिणाम यह है कि लागू, जिसे आमतौर पर इस संदर्भ में मूल्यांकन कहा जाता है, निरंतर है (ध्यान दें कि eval कंप्यूटर विज्ञान में एक पूरी तरह से अलग अवधारणा है।) अर्थात,
निरंतर है जब कॉम्पैक्ट-ओपन है और स्थानीय रूप से कॉम्पैक्ट हौसडॉर्फ।[17] होमोटॉपी की निरंतरता को स्थापित करने के लिए ये दो परिणाम केंद्रीय हैं, अर्थात कब इकाई अंतराल है , ताकि या तो दो कार्यों के होमोटॉपी के रूप में सोचा जा सकता है से , या, समतुल्य, एक एकल (निरंतर) पथ .
बीजगणितीय टोपोलॉजी
बीजगणितीय टोपोलॉजी में, करी एकमैन-हिल्टन द्वैत के उदाहरण के रूप में कार्य करता है, और, जैसे, विभिन्न सेटिंग्स में एक महत्वपूर्ण भूमिका निभाता है। उदाहरण के लिए, लूप स्पेस कम निलंबन के निकट है; इसे आमतौर पर इस रूप में लिखा जाता है
कहाँ पे नक्शों की होमोटॉपी कक्षाओं का सेट है , तथा ए का निलंबन (टोपोलॉजी) है, और ए का लूप स्पेस है। संक्षेप में, निलंबन के कार्टेशियन उत्पाद के रूप में देखा जा सकता है इकाई अंतराल के साथ, अंतराल को लूप में बदलने के लिए एक तुल्यता संबंध मॉड्यूल करें। कढ़ी रूप तब अंतरिक्ष को मैप करता है लूप्स से फ़ंक्शंस के स्थान पर , यानी से में .[17]फिर आसन्न फ़ंक्टर है जो लूप स्पेस के लिए निलंबन को मैप करता है, और अनकरीइंग डुअल है।[17]
मैपिंग कोन (टोपोलॉजी) और मैपिंग फाइबर (cofibration और कंपन) के बीच द्वंद्व[13]: chapters 6,7 करीने के एक रूप के रूप में समझा जा सकता है, जो बदले में लंबे सटीक अनुक्रम और कॉक्सैक्ट पपी अनुक्रमों के द्वंद्व की ओर जाता है।
समरूप बीजगणित में, करी और अनकरींग के बीच संबंध को टेंसर-होम संयोजन के रूप में जाना जाता है। यहाँ, एक दिलचस्प मोड़ उत्पन्न होता है: होम फ़ंक्टर और टेन्सर उत्पाद फ़ंक्टर एक सटीक क्रम में (गणित) नहीं उठा सकते हैं; यह Ext functor और Tor functor की परिभाषा की ओर ले जाता है।
डोमेन सिद्धांत
आदेश सिद्धांत में, अर्थात्, आंशिक रूप से आदेशित सेटों के जाली (क्रम) का सिद्धांत, जाली को स्कॉट टोपोलॉजी दिए जाने पर एक सतत कार्य होता है।[18] लैम्ब्डा कैलकुस के लिए शब्दार्थ प्रदान करने के प्रयास में स्कॉट-निरंतर कार्यों की पहली बार जांच की गई थी (जैसा कि सामान्य सेट सिद्धांत ऐसा करने के लिए अपर्याप्त है)। अधिक आम तौर पर, स्कॉट-निरंतर कार्यों का अध्ययन अब डोमेन सिद्धांत में किया जाता है, जिसमें कंप्यूटर एल्गोरिदम के सांकेतिक शब्दार्थ का अध्ययन शामिल है। ध्यान दें कि स्कॉट टोपोलॉजी टोपोलॉजिकल स्पेस की श्रेणी में आने वाली कई सामान्य टोपोलॉजी से काफी अलग है; स्कॉट टोपोलॉजी आमतौर पर अंतिम टोपोलॉजी है, और शांत स्थान नहीं है।
निरंतरता की धारणा होमोटोपी प्रकार के सिद्धांत में प्रकट होती है, जहां, मोटे तौर पर बोलना, दो कंप्यूटर प्रोग्रामों को होमोटोपिक माना जा सकता है, अर्थात समान परिणामों की गणना करें, यदि वे एक से दूसरे में लगातार संकेत रीफैक्टरिंग कर सकते हैं।
लैम्ब्डा गणना
सैद्धांतिक कंप्यूटर विज्ञान में, करींग लैम्ब्डा कैलकुस जैसे बहुत ही सरल सैद्धांतिक मॉडल में कई तर्कों के साथ कार्यों का अध्ययन करने का एक विधि प्रदान करता है, जिसमें कार्य केवल एक तर्क लेते हैं। एक कलन पर विचार करें दो तर्क लेना, और प्रकार रखना , जिसका अर्थ यह समझा जाना चाहिए कि x का प्रकार होना चाहिए , y का प्रकार होना चाहिए , और फलन स्वयं प्रकार लौटाता है . F के कढ़ी रूप को परिभाषित किया गया है
कहाँ पे लैम्ब्डा कैलकुलस का अमूर्त है। चूंकि करी, इनपुट के रूप में, प्रकार के साथ कार्य करती है , कोई निष्कर्ष निकालता है कि करी का प्रकार ही है
→ ऑपरेटर को अक्सर सही सहयोगी माना जाता है, इसलिए करी फलन प्रकार अक्सर के रूप में लिखा जाता है . इसके विपरीत, कलन आवेदन को ऑपरेटर सहयोगीता माना जाता है | बाएं-सहयोगी, ताकि के बराबर है
- .
यही है, आवेदन के क्रम को स्पष्ट करने के लिए कोष्ठक की आवश्यकता नहीं है।
करीबी कार्यों का उपयोग किसी भी प्रोग्रामिंग भाषा में किया जा सकता है जो क्लोजर (कंप्यूटर विज्ञान) का समर्थन करता है; हालांकि, अनिश्चित कार्यों को आम तौर पर दक्षता कारणों से पसंद किया जाता है, क्योंकि आंशिक अनुप्रयोग के ऊपरी हिस्से और बंद करने के निर्माण को अधिकांश फलन कॉलों के लिए टाला जा सकता है।
प्रकार सिद्धांत
प्रकार के सिद्धांत में, कंप्यूटर विज्ञान में एक प्रकार की प्रणाली के सामान्य विचार को एक विशिष्ट बीजगणित के प्रकारों में औपचारिक रूप दिया जाता है। उदाहरण के लिए, लिखते समय , आशय यह है तथा टाइप सिस्टम हैं, जबकि एरो एक प्रकार कंस्ट्रक्टर टाइप करें है, विशेष रूप से, फलन प्रकार या तीर प्रकार। इसी तरह, कार्टेशियन उत्पाद प्रकार का निर्माण उत्पाद प्रकार कन्स्ट्रक्टर द्वारा किया जाता है .
प्रकार-सैद्धांतिक दृष्टिकोण प्रोग्रामिंग भाषाओं जैसे एमएल (प्रोग्रामिंग भाषा) और उससे प्राप्त और प्रेरित भाषाओं में व्यक्त किया गया है: सीएएमएल, हास्केल (प्रोग्रामिंग भाषा) और एफ शार्प (प्रोग्रामिंग भाषा) | एफ #।
प्रकार-सैद्धांतिक दृष्टिकोण श्रेणी सिद्धांत की भाषा के लिए एक स्वाभाविक पूरक प्रदान करता है, जैसा कि नीचे चर्चा की गई है। ऐसा इसलिए है क्योंकि श्रेणियों, और विशेष रूप से, मोनोइडल श्रेणियों में एक आंतरिक भाषा होती है, जिसमें साधारण रूप से टाइप की गई लैम्ब्डा कैलकुलस ऐसी भाषा का सबसे प्रमुख उदाहरण है। यह इस संदर्भ में महत्वपूर्ण है, क्योंकि इसे एक प्रकार के कंस्ट्रक्टर, एरो टाइप से बनाया जा सकता है। इसके बाद करी भाषा को एक प्राकृतिक उत्पाद प्रकार प्रदान करती है। श्रेणियों और प्रकारों में वस्तुओं के बीच पत्राचार तब प्रोग्रामिंग भाषाओं को लॉजिक्स (करी-हावर्ड पत्राचार के माध्यम से) और अन्य प्रकार की गणितीय प्रणालियों के रूप में फिर से व्याख्या करने की अनुमति देता है, जैसा कि आगे की खोज की गई है।
तर्क
करी-हावर्ड पत्राचार के तहत, करी और अनकरींग का अस्तित्व तार्किक प्रमेय के बराबर है , क्योंकि टुपल्स (उत्पाद प्रकार) तर्क में संयोजन से मेल खाता है, और फलन प्रकार निहितार्थ से मेल खाता है।
घातीय वस्तु Heyting algebras की श्रेणी में सामान्य रूप से सामग्री सशर्त के रूप में लिखा जाता है . वितरण हेटिंग बीजगणित बूलियन बीजगणित हैं, और घातीय वस्तु का स्पष्ट रूप है , इस प्रकार यह स्पष्ट करता है कि घातीय वस्तु वास्तव में भौतिक निहितार्थ (अनुमान का नियम) है।[19]
श्रेणी सिद्धांत
करीइंग और अनकरींग की उपरोक्त धारणाएं श्रेणी सिद्धांत में उनके सबसे सामान्य, अमूर्त कथन को खोजती हैं। Currying एक घातीय वस्तु की एक सार्वभौमिक संपत्ति है, और कार्टेशियन बंद श्रेणी में एक संयोजन (श्रेणी सिद्धांत) को जन्म देती है। अर्थात्, एक उत्पाद (श्रेणी सिद्धांत) से रूपवाद (श्रेणी सिद्धांत) के बीच एक प्राकृतिक परिवर्तन समरूपता है। और एक घातीय वस्तु के लिए morphisms .
यह बंद मोनोइडल श्रेणी में एक व्यापक परिणाम के लिए सामान्यीकरण करता है: करीइंग यह कथन है कि मोनोइडल श्रेणी और आंतरिक होम आसन्न फ़ैक्टर हैं; यानी हर वस्तु के लिए एक प्राकृतिक परिवर्तन है:
यहाँ, होम श्रेणी में सभी morphisms के (बाहरी) होम-फ़ंक्टर को दर्शाता है, जबकि बंद monoidal श्रेणी में आंतरिक होम functor को दर्शाता है। समुच्चयों की श्रेणी के लिए, दोनों समान हैं। जब उत्पाद कार्तीय उत्पाद है, तो आंतरिक होम घातीय वस्तु बन जाती है .
करी दो तरह से टूट सकती है। एक यह है कि यदि कोई श्रेणी बंद श्रेणी नहीं है, और इस प्रकार एक आंतरिक होम फ़ैक्टर की कमी है (संभवतः क्योंकि इस तरह के फ़ैक्टर के लिए एक से अधिक विकल्प हैं)। दूसरा विधि यह है कि यदि यह मोनोइडल श्रेणी नहीं है, और इस प्रकार एक उत्पाद की कमी है (अर्थात, वस्तुओं के जोड़े को लिखने का एक विधि नहीं है)। जिन श्रेणियों में उत्पाद और आंतरिक होम दोनों होते हैं, वे बिल्कुल बंद मोनोइडल श्रेणियां हैं।
शास्त्रीय तर्क की चर्चा के लिए कार्टेशियन बंद श्रेणियों की सेटिंग पर्याप्त है; बंद मोनोइडल श्रेणियों की अधिक सामान्य सेटिंग क्वांटम संगणना के लिए उपयुक्त है।[20] इन दोनों के बीच का अंतर यह है कि कार्टेशियन श्रेणियों के लिए उत्पाद (गणित) (जैसे सेट की श्रेणी, पूर्ण आंशिक ऑर्डर या हेटिंग बीजगणित) केवल कार्टेशियन उत्पाद है; इसकी व्याख्या वस्तुओं की एक क्रमबद्ध जोड़ी (या एक सूची) के रूप में की जाती है। बस टाइप किया गया लैम्ब्डा कैलकुस कार्टेशियन बंद श्रेणियों की आंतरिक भाषा है; और यह इस कारण से है कि जोड़े और सूचियाँ LISP, योजना (प्रोग्रामिंग भाषा) और कई कार्यात्मक प्रोग्रामिंग भाषाओं के प्रकार सिद्धांत में प्राथमिक प्रकार की प्रणाली हैं।
इसके विपरीत, मोनोइडल श्रेणी के लिए उत्पाद (जैसे हिल्बर्ट अंतरिक्ष और कार्यात्मक विश्लेषण के वेक्टर रिक्त स्थान) टेंसर उत्पाद है। ऐसी श्रेणियों की आंतरिक भाषा रेखीय तर्क है, जो क्वांटम तर्क का एक रूप है; इसी प्रकार की प्रणाली रैखिक प्रकार की प्रणाली है। ऐसी श्रेणियां उलझी हुई क्वांटम अवस्थाओं का वर्णन करने के लिए उपयुक्त हैं, और, अधिक आम तौर पर, करी-हावर्ड पत्राचार को क्वांटम यांत्रिकी, बीजगणितीय टोपोलॉजी में coboardism और स्ट्रिंग सिद्धांत के लिए एक विशाल सामान्यीकरण की अनुमति देती हैं।[1] रेखीय प्रकार प्रणाली, और रेखीय तर्क तुल्यकालन आदिमों का वर्णन करने के लिए उपयोगी होते हैं, जैसे पारस्परिक बहिष्करण ताले, और वेंडिंग मशीनों का संचालन।
== आंशिक फलन एप्लिकेशन == के साथ तुलना करें
करी और आंशिक कार्य अनुप्रयोग अक्सर मिश्रित होते हैं।[21] दोनों के बीच महत्वपूर्ण अंतरों में से एक यह है कि आंशिक रूप से लागू किए गए फलन के लिए कॉल तुरंत परिणाम देता है, करींग श्रृंखला के नीचे कोई अन्य फलन नहीं; इस भेद को उन कार्यों के लिए स्पष्ट रूप से चित्रित किया जा सकता है जिनकी संख्या दो से अधिक है।[22] प्रकार का एक कार्य दिया , करी पैदा करता है . यही है, जबकि पहले फलन का मूल्यांकन इस रूप में प्रदर्शित किया जा सकता है , करीबी कलन के मूल्यांकन के रूप में प्रतिनिधित्व किया जाएगा , प्रत्येक तर्क को पिछले मंगलाचरण द्वारा लौटाए गए एकल-तर्क फलन के बदले में लागू करना। ध्यान दें कि कॉल करने के बाद , हम एक ऐसे फलन के साथ बचे हैं जो एक तर्क लेता है और दूसरा फलन देता है, न कि एक ऐसा फलन जो दो तर्क लेता है।
इसके विपरीत, आंशिक फलन एप्लिकेशन एक फलन के लिए कई तर्कों को ठीक करने की प्रक्रिया को संदर्भित करता है, जो कि छोटे arity के दूसरे फलन का निर्माण करता है। की परिभाषा दी ऊपर, हम पहले तर्क को ठीक (या 'बाइंड') कर सकते हैं, जिससे एक प्रकार का फलन तैयार होता है . इस कलन के मूल्यांकन के रूप में प्रतिनिधित्व किया जा सकता है . ध्यान दें कि इस मामले में आंशिक फलन एप्लिकेशन का परिणाम एक ऐसा फलन है जो दो तर्क लेता है।
सहज रूप से, आंशिक फलन एप्लिकेशन कहता है कि यदि आप फलन के पहले पैरामीटर (कंप्यूटर विज्ञान) को ठीक करते हैं, तो आपको शेष तर्कों का एक फलन मिलता है। उदाहरण के लिए, यदि फलन div डिवीजन ऑपरेशन x/y के लिए खड़ा है, तो पैरामीटर x के साथ div 1 पर तय किया गया है (यानी, div 1) एक और फलन है: फलन inv के समान जो इसके तर्क के गुणात्मक व्युत्क्रम को परिभाषित करता है, परिभाषित आमंत्रण द्वारा (y) = 1/y.
आंशिक अनुप्रयोग के लिए व्यावहारिक अभिप्रेरणा यह है कि बहुत बार किसी फलन के लिए सभी नहीं बल्कि कुछ तर्क देकर प्राप्त किए गए फलन उपयोगी होते हैं; उदाहरण के लिए, कई भाषाओं में समान कार्य या संचालिका होती है plus_one
. आंशिक अनुप्रयोग इन कार्यों को परिभाषित करना आसान बनाता है, उदाहरण के लिए एक फलन बनाकर जो इसके पहले तर्क के रूप में 1 बाउंड के साथ अतिरिक्त ऑपरेटर का प्रतिनिधित्व करता है।
आंशिक अनुप्रयोग को एक निश्चित बिंदु पर एक निश्चित कार्य के मूल्यांकन के रूप में देखा जा सकता है, उदा। दिया गया तथा फिर या केवल कहाँ पे करी एफ का पहला पैरामीटर।
इस प्रकार, आंशिक अनुप्रयोग एक निश्चित बिंदु पर एक करीबी कलन में कम हो जाता है। इसके अलावा, एक निश्चित बिंदु पर एक घुमावदार कार्य (तुच्छ रूप से), एक आंशिक अनुप्रयोग है। अधिक साक्ष्य के लिए, ध्यान दें कि, कोई भी कार्य दिया गया है , एक कलन इस प्रकार परिभाषित किया जा सकता है . इस प्रकार, किसी भी आंशिक आवेदन को एक करी ऑपरेशन में घटाया जा सकता है। जैसे, करी को एक ऑपरेशन के रूप में अधिक उपयुक्त रूप से परिभाषित किया गया है, जो कई सैद्धांतिक मामलों में, अक्सर पुनरावर्ती रूप से लागू होता है, लेकिन जो सैद्धांतिक रूप से अप्रभेद्य है (जब एक ऑपरेशन के रूप में माना जाता है) आंशिक आवेदन से।
तो, एक आंशिक अनुप्रयोग को कुछ फलन के इनपुट के कुछ क्रम पर करी ऑपरेटर के एकल अनुप्रयोग के उद्देश्य परिणाम के रूप में परिभाषित किया जा सकता है।
यह भी देखें
- टेंसर-होम संयोजन
- आलसी मूल्यांकन
- क्लोजर (कंप्यूटर साइंस)
- एसएमएन प्रमेय |S m
n प्रमेय - बंद मोनोइडल श्रेणी
टिप्पणियाँ
- ↑ 1.0 1.1 John C. Baez and Mike Stay, "Physics, Topology, Logic and Computation: A Rosetta Stone", (2009) ArXiv 0903.0340 in New Structures for Physics, ed. Bob Coecke, Lecture Notes in Physics vol. 813, Springer, Berlin, 2011, pp. 95-174.
- ↑ 2.0 2.1 Gottlob Frege, Grundgesetze der Arithmetik I, Jena: Verlag Hermann Pohle, 1893, §36.
- ↑ 3.0 3.1 3.2 Willard Van Orman Quine, introduction to Moses Schönfinkel's "Bausteine der mathematischen Logik", pp. 355–357, esp. 355. Translated by Stefan Bauer-Mengelberg as "On the building blocks of mathematical logic" in Jean van Heijenoort (1967), A Source Book in Mathematical Logic, 1879–1931. Harvard University Press, pp. 355–66.
- ↑ 4.0 4.1 Strachey, Christopher (2000). "प्रोग्रामिंग भाषाओं में मौलिक अवधारणाएँ". Higher-Order and Symbolic Computation. 13: 21. CiteSeerX 10.1.1.332.3161. doi:10.1023/A:1010000313106. S2CID 14124601.
एकल ऑपरेंड ऑपरेटरों के क्रमिक अनुप्रयोग के लिए कई ऑपरेंड वाले ऑपरेटरों को कम करने के लिए शॉनफिंकेल द्वारा उत्पन्न एक उपकरण है।
(Reprinted lecture notes from 1967.) - ↑ 5.0 5.1 Reynolds, John C. (1972). "हायर-ऑर्डर प्रोग्रामिंग लैंग्वेज के लिए डेफिनिशनल इंटरप्रेटर". Proceedings of the ACM Annual Conference. 2 (4): 717–740. doi:10.1145/800194.805852. S2CID 163294.
अंतिम पंक्ति में हमने बाइनरी ऑपरेशन को एक भाषा में शुरू करने की समस्या को हल करने के लिए करीइंग (तर्कशास्त्री एच. करी के बाद) नामक एक ट्रिक का उपयोग किया है जहां सभी कार्यों को एक ही तर्क को स्वीकार करना होगा। (रेफरी की टिप्पणी है कि हालांकि "करीइंग" स्वादिष्ट है, "शॉनफिंकेलिंग" अधिक सटीक हो सकता है।)
- ↑ Kenneth Slonneger and Barry L. Kurtz. Formal Syntax and Semantics of Programming Languages. 1995. p. 144.
- ↑ Henk Barendregt, Erik Barendsen, "Introduction to Lambda Calculus", March 2000, page 8.
- ↑ Curry, Haskell; Feys, Robert (1958). संयोजन तर्क. Vol. I (2 ed.). Amsterdam, Netherlands: North-Holland Publishing Company.
- ↑ Graham Hutton. "Comp.lang.functional के लिए अक्सर पूछे जाने वाले प्रश्न: Currying". nott.ac.uk.
- ↑ Curry, Haskell B. (1980). "कॉम्बिनेटरी लॉजिक के कुछ दार्शनिक पहलू". Studies in Logic and the Foundations of Mathematics. 101: 85–101. doi:10.1016/S0049-237X(08)71254-0. ISBN 9780444853455.
कुछ समकालीन तर्कशास्त्री किसी फलन को देखने के इस तरीके को "करीइंग" कहते हैं, क्योंकि मैंने इसका व्यापक उपयोग किया है; लेकिन स्कोनफिंकल को इसका विचार मुझसे 6 साल पहले आया था।
- ↑ I. Heim and A. Kratzer (1998). Semantics in Generative Grammar. Blackwell.
- ↑ Turner, David (1 Jun 1997). "प्रोग्रामिंग लैंग्वेज, करीइंग, या शोनफिंकलिंग?". computer-programming-forum.com. Retrieved 3 March 2022.
- ↑ 13.0 13.1 J.P. May, A Concise Course in Algebraic Topology, (1999) Chicago Lectures in Mathematics ISBN 0-226-51183-9
- ↑ Compactly generated topological space at the nLab
- ↑ P. I. Booth and J. Tillotson, "Monoidal closed, Cartesian closed and convenient categories of topological spaces", Pacific Journal of Mathematics, 88 (1980) pp.33-53.
- ↑ Convenient category of topological spaces at the nLab
- ↑ 17.0 17.1 17.2 Joseph J. Rotman, An Introduction to Algebraic Topology (1988) Springer-Verlag ISBN 0-387-96678-1 (See Chapter 11 for proof.)
- ↑ Barendregt, H.P. (1984). लैम्ब्डा कैलकुलस. North-Holland. ISBN 978-0-444-87508-2. (See theorems 1.2.13, 1.2.14)
- ↑ Saunders Mac Lane and Ieke Moerdijk, Sheaves in Geometry and Logic (1992) Springer ISBN 0-387-97710-4 (See Chapter 1, pp.48-57)
- ↑ Samson Abramsky and Bob Coecke, "A Categorical Semantics for Quantum Protocols."
- ↑ "द अनकार्व्ड ब्लॉग: आंशिक कार्य अनुप्रयोग करी नहीं है". uncarved.com. Archived from the original on 2016-10-23.
- ↑ "5 मिनट में कार्यात्मक प्रोग्रामिंग". Slides.
संदर्भ
- Schönfinkel, Moses (1924). "Über die Bausteine der mathematischen Logik". Math. Ann. 92 (3–4): 305–316. doi:10.1007/BF01448013. S2CID 118507515.
- Heim, Irene; Kratzer, Angelika (1998). Semantics in a Generative Grammar. Malden: Blackwall Publishers. ISBN 0-631-19712-5.
इस पेज में लापता आंतरिक लिंक की सूची
- अंक शास्त्र
- कलन (गणित)
- आंशिक आवेदन
- लैम्ब्डा कैलकुलस
- प्रोग्रामिंग भाषाओं में मौलिक अवधारणाएँ
- क्रमित युग्म
- कार्तीय गुणन
- समुच्चय सिद्धान्त
- कलन स्थान
- द्विभाजन
- अगर और केवल अगर
- होमोटॉपी वर्ग
- सहायक संचालिका
- लिफ्ट (गणित)
- लंबा सटीक क्रम
- टेंसर उत्पाद
- गुड़िया अनुक्रम
- जाली (आदेश)
- होमोटॉपी प्रकार सिद्धांत
- ऑपरेटर साहचर्य
- क्लोजर (कंप्यूटर साइंस)
- प्रकार प्रणाली
- कलन प्रकार
- सरल रूप से टाइप किया हुआ लैम्ब्डा कैलकुलस
- मोनोइडल श्रेणियां
- टपल
- सामग्री निहितार्थ (अनुमान का नियम)
- समाकृतिकता
- क्वांटम गणना
- बस टाइप किया हुआ लैम्ब्डा कैलकुलस
- पूर्ण आंशिक आदेश
- सदिश स्थल
- रैखिक प्रकार प्रणाली
- रैखिक तर्क
- उलझी हुई क्वांटम अवस्थाएँ
- arity
बाहरी संबंध
- Currying Schonfinkelling at the Portland Pattern Repository
- Currying != Generalized Partial Application! - post at Lambda-the-Ultimate.org