कर्र्यींग (Currying): Difference between revisions
(Created page with "{{short description|Transforming a function in such a way that it only takes a single argument}} {{about|the mathematical technique|the cooking process of this name|Curry|the...") |
No edit summary |
||
(20 intermediate revisions by 4 users not shown) | |||
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}} | ||
गणित और [[कंप्यूटर विज्ञान|संगणक विज्ञान]] में, कर्र्यींग एक के मूल्यांकन का अनुवाद करने की विधि है जो फलनों के [[पैरामीटर (कंप्यूटर विज्ञान)|अनुक्रम (संगणक विज्ञान)]] का मूल्यांकन करने में कई तर्क लेता है, प्रत्येक एक तर्क के साथ है। उदाहरण के लिए, एक कलन <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 13: | ||
या क्रम में कहा जाता है, | या क्रम में कहा जाता है, | ||
:<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>,का अनुप्रयोग करता है। और इस प्रक्रिया को पुनरावृत्त किया जा सकता है। | |||
== प्रेरणा == | == प्रेरणा == | ||
कर्र्यींग उन फलनों के साथ काम करने का एक विधि प्रदान करता है जो कई तर्क लेते हैं, और उन्हें संरचनाओं में उपयोग करते हैं जहां फलन केवल एक तर्क ले सकते हैं। उदाहरण के लिए, कुछ विश्लेषणात्मक विधियों को केवल एक ही तर्क वाले फलनों पर लागू किया जा सकता है। व्यावहारिक कार्य अधिकांश इससे अधिक तर्क लेते हैं। फ्रीज ने दिखाया कि यह एकल तर्क स्थितियों के लिए समाधान प्रदान करने के लिए पर्याप्त था, क्योंकि एक फलन को कई तर्कों के साथ एकल-तर्क फलनों की श्रृंखला में बदलना संभव था। यह परिवर्तन अब कर्र्यींग के रूप में जानी जाने वाली प्रक्रिया है।<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> | ||
ताकि मूल | ताकि मूल फलन <math>f</math> और इसकी कर्र्यींग <math>h</math> बिल्कुल समान जानकारी व्यक्त करें। ऐसी स्थिति में हम लिखते भी हैं | ||
:<math>\text{curry}(f) = h.</math> | :<math>\text{curry}(f) = h.</math> | ||
यह दो से अधिक तर्कों वाले | यह दो से अधिक तर्कों वाले फलनों के लिए भी काम करता है। यदि <math>f</math> तीन तर्कों का एक फलन <math>f(x,y,z)</math> था, इसकी कर्र्यींग <math>h</math> यह गुण होगा | ||
:<math>f(x,y,z)=h(x)(y)(z).</math> | :<math>f(x,y,z)=h(x)(y)(z).</math> | ||
Line 40: | Line 39: | ||
== इतिहास == | == इतिहास == | ||
"कर्र्यींग" में "कर्र्यींग" तर्कशास्त्री हास्केल कर्र्यींग का एक संदर्भ है, जिन्होंने इस अवधारणा का व्यापक रूप से उपयोग किया था, लेकिन मोसेस शॉनफिंकेल को कर्र्यींग से 6 साल पहले यह विचार आया था।<ref>{{cite journal |last1=Curry |first1=Haskell B. |title=कॉम्बिनेटरी लॉजिक के कुछ दार्शनिक पहलू|journal=Studies in Logic and the Foundations of Mathematics |date=1980 |volume=101 |pages=85–101 |doi=10.1016/S0049-237X(08)71254-0|isbn=9780444853455 |quote=कुछ समकालीन तर्कशास्त्री किसी फलन को देखने के इस तरीके को "करीइंग" कहते हैं, क्योंकि मैंने इसका व्यापक उपयोग किया है; लेकिन स्कोनफिंकल को इसका विचार मुझसे 6 साल पहले आया था।}}</ref> वैकल्पिक नाम "शॉनफिंकेलाइजेशन" प्रस्तावित किया गया है।<ref>I. Heim and A. Kratzer (1998). ''Semantics in Generative Grammar''. Blackwell.</ref> गणितीय संदर्भ में, सिद्धांत को 1893 में गोटलॉब फ्रेज द्वारा काम करने के लिए वापस खोजा जा सकता है।<ref name=Frege/><ref name=:0/> | |||
कर्र्यींग शब्द का जनक स्पष्ट नहीं है। [[डेविड टर्नर (कंप्यूटर वैज्ञानिक)|डेविड टर्नर (संगणक वैज्ञानिक)]] का कहना है कि यह शब्द [[क्रिस्टोफर स्ट्रेची]] द्वारा अपने 1967 के व्याख्यान नोट्स में मौलिक अवधारणाओं को प्रोग्रामिंग भाषाओं में गढ़ा गया था।<ref>{{cite web |last1=Turner |first1=David |title=प्रोग्रामिंग लैंग्वेज, करीइंग, या शोनफिंकलिंग?|url=http://computer-programming-forum.com/26-programming-language/976f118bb90d8b15.htm |website=computer-programming-forum.com |access-date=3 March 2022 |date=1 Jun 1997}}</ref> लेकिन यद्यपि अवधारणा का उल्लेख किया गया है, नोटों में कर्र्यींग शब्द प्रकट नहीं होता है।<ref name=Strachey/> जॉन सी रेनॉल्ड्स ने 1972 के पेपर में कर्र्यींग को परिभाषित किया, लेकिन इस शब्द को गढ़ने का दावा नहीं किया।<ref name=Reynolds/> | |||
== परिभाषा == | == परिभाषा == | ||
एक अनौपचारिक परिभाषा के साथ | एक अनौपचारिक परिभाषा के साथ प्रारंभ करके कर्र्यींग को सबसे आसानी से समझा जा सकता है, जिसे बाद में कई अलग-अलग डोमेन में उपयुक्त करने के लिए बनाया जा सकता है। सबसे पहले, स्थापित करने के लिए कुछ संकेतन है। संकेतन <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>, | ||
कर्र्यींग एक नया फलन बनाता है | |||
:<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>Y</math> को <math>Z</math> पर मापता है. इसके द्वारा परिभाषित किया गया है | |||
:<math>h(x)(y)=f(x,y)</math> | :<math>h(x)(y)=f(x,y)</math> | ||
<math>x</math> से <math>X</math> और <math>y</math> से <math>Y</math> के लिये. फिर हम भी लिखते हैं | |||
:<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>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> | ||
वास्तविक में, यह प्राकृतिक आपत्ति है जो फलनों के सेट के लिए [[घातीय संकेतन]] को सही ठहराती है। जैसा कि कर्र्यींगने के सभी उदाहरणों में होता है, ऊपर दिया गया सूत्र एक [[सहायक कारक]] का वर्णन करता है: प्रत्येक निश्चित सेट के लिए <math>C</math>, काम करनेवाला <math>B\mapsto B\times C</math> प्रकार्यक के पास <math>A \mapsto A^C</math>छोड़ दिया जाता है. | |||
[[सेट की श्रेणी]] में, [[गणितीय वस्तु]] <math>Y^X</math> [[घातीय वस्तु]] कहा जाता है। | [[सेट की श्रेणी]] में, [[गणितीय वस्तु]] <math>Y^X</math> [[घातीय वस्तु]] कहा जाता है। | ||
=== | === कलन रिक्त स्थान === | ||
फलन रिक्त स्थान के सिद्धांत में, जैसे कि [[कार्यात्मक विश्लेषण]] या [[होमोटॉपी सिद्धांत]] में, सामान्यतः [[टोपोलॉजिकल स्पेस]] स्थान के बीच [[निरंतर कार्य|निरंतर]] फलनों में महत्त्व होती है। <math>X</math> से <math>Y</math> तक सभी फलनो के सेट के लिए एक <math>\text{Hom}(X,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> | ||
जबकि | जबकि अनकर्र्यींग व्युत्क्रम चित्र है। यदि सेट <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> | ||
जब <math>X</math>, <math>Y</math> और <math>Y^X</math> [[कॉम्पैक्ट रूप से उत्पन्न स्थान|सघन से उत्पन्न होते]] हैं,<ref name="may">J.P. May, ''[http://www.math.uchicago.edu/~may/CONCISE/ConciseRevised.pdf A Concise Course in Algebraic Topology]'', (1999) Chicago Lectures in Mathematics {{ISBN|0-226-51183-9}}</ref>{{rp|at=chapter 5}}<ref>{{nlab|id=compactly+generated+topological+space|title=Compactly generated topological space}}</ref> तो फिर एक [[होमियोमोर्फिज्म]] होगा, जबकि और भी स्थितियां हैं।<ref>P. I. Booth and J. Tillotson, "[http://msp.org/pjm/1980/88-1/pjm-v88-n1-p03-s.pdf Monoidal closed, Cartesian closed and convenient categories of topological spaces]", ''Pacific Journal of Mathematics'', '''88''' (1980) pp.33-53.</ref><ref>{{nlab| convenient+category+of+topological+spaces | title=Convenient category of topological spaces}}</ref> | |||
एक उपयोगी उपप्रमेय यह है कि एक फलन निरंतर होता है यदि और केवल यदि इसका | |||
एक उपयोगी उपप्रमेय यह है कि एक फलन निरंतर होता है यदि और केवल यदि इसका कर्र्यींगड रूप निरंतर हो तो ही निरंतर फलन होगा। एक अन्य महत्वपूर्ण परिणाम यह है कि [[लागू|अनुप्रयोग प्रतिचित्र]], जिसे सामान्यतः इस संदर्भ में "मूल्यांकन" कहा जाता है, निरंतर है (ध्यान दें कि [[eval]] संगणक विज्ञान में एक पूरी तरह से अलग अवधारणा है।) अर्थात, | |||
<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>Z</math> के होमोटॉपी के रूप में सोचा जा सकता है, या, समतुल्य, एक एकल (निरंतर) पथ <math>Z^Y</math>है. | ||
बीजगणितीय टोपोलॉजी में, | |||
=== बीजगणितीय टोपोलॉजी === | |||
बीजगणितीय टोपोलॉजी में, कर्र्यींग एकमैन-हिल्टन द्वैत के उदाहरण के रूप में कार्य करता है, और, जैसे, विभिन्न सेटिंग्स में एक महत्वपूर्ण भूमिका निभाता है। उदाहरण के लिए, [[लूप स्पेस]] [[कम निलंबन]] के निकट है; इसे सामान्यतः इस रूप में लिखा जाता है | |||
:<math>[\Sigma X,Z] \approxeq [X, \Omega Z]</math> | :<math>[\Sigma X,Z] \approxeq [X, \Omega Z]</math> | ||
जहाँ <math>[A,B]</math> चित्रों की होमोटॉपी कक्षाओं का सेट है <math>A \rightarrow B</math>, और <math>\Sigma A</math> का [[निलंबन (टोपोलॉजी)]] है, और <math>\Omega A</math> का लूप स्पेस है। संक्षेप में, निलंबन <math>\Sigma X</math> के कार्तीय उत्पाद के रूप में देखा जा सकता है <math>X</math> इकाई अंतराल के साथ, अंतराल को लूप में बदलने के लिए एक तुल्यता संबंध मॉड्यूल करें। कर्र्यींगड अवस्था फिर <math>X</math> को लूप्स से <math>Z</math> में अर्थात् <math>X</math> से <math>\Omega Z</math> में फ़ंक्शन के स्थान पर चित्रण करता है।<ref name=rotman/> तब <math>\text{curry}</math> आसन्न फ़ंक्टर है जो लूप स्पेस के लिए निलंबन को चित्रण करता है, और अनकर्र्यींगइंग दोहरी है।<ref name=rotman/> | |||
[[मैपिंग कोन (टोपोलॉजी)]] और | [[मैपिंग कोन (टोपोलॉजी)|चित्रण कोन (टोपोलॉजी)]] और चित्रण फाइबर ([[cofibration]] और [[कंपन]]) के बीच द्वंद्व<ref name=may/>{{rp|at=chapters 6,7}}को कर्र्यींगने के एक रूप के रूप में समझा जा सकता है, जो बदले में लंबे यथार्थ अनुक्रम और कॉक्सैक्ट पपी अनुक्रमों के द्वंद्व की ओर जाता है। | ||
[[समरूप बीजगणित]] में, | [[समरूप बीजगणित]] में, कर्र्यींग और अनकर्र्यींग के बीच संबंध को [[टेंसर-होम संयोजन]] के रूप में जाना जाता है। यहाँ, एक महत्वपूर्ण मोड़ उत्पन्न होता है: होम फ़ंक्टर और टेन्सर उत्पाद फ़ंक्टर एक [[सटीक क्रम|यथार्थ क्रम]] में (गणित) नहीं उठा सकते हैं; यह [[Ext functor|ईएक्सटी]] [[Tor functor|फ़ैक्टर]] और [[Tor functor|टोर फ़ैक्टर]] की परिभाषा की ओर ले जाता है। | ||
=== डोमेन सिद्धांत === | === डोमेन सिद्धांत === | ||
[[आदेश सिद्धांत]] में, अर्थात्, [[आंशिक रूप से आदेशित सेट]] | [[आदेश सिद्धांत|डोमेन सिद्धांत]] में, अर्थात्, [[आंशिक रूप से आदेशित सेट|आंशिक रूप से डोमेनित सेटों]] के जाली (क्रम) का सिद्धांत, <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> | ||
जहाँ <math>\lambda</math> लैम्ब्डा गणना का अमूर्त है। चूंकि कर्र्यींग, इनपुट <math>(X\times Y)\to Z</math> के रूप में, प्रकार के साथ कार्य करती है, कोई यह निष्कर्ष निकालता है कि कर्र्यींग का प्रकार ही है | |||
:<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>. | ||
अर्थात्, आवेदन के क्रम को स्पष्ट करने के लिए कोष्ठक की आवश्यकता नहीं है। | |||
नजदीकी फलनों का उपयोग किसी भी प्रोग्रामिंग भाषा में किया जा सकता है जो क्लोजर (संगणक विज्ञान) का समर्थन करता है; चूंकि, अनिश्चित फलनों को सामान्यतः दक्षता कारणों से पसंद किया जाता है, क्योंकि आंशिक अनुप्रयोग के ऊपरी हिस्से और बंद करने के निर्माण को अधिकांश फलन कॉलों के लिए टाला जा सकता है। | |||
=== | === प्रकार सिद्धांत === | ||
प्रकार के सिद्धांत में, | प्रकार के सिद्धांत में, संगणक विज्ञान में एक प्रकार की प्रणाली के सामान्य विचार को एक विशिष्ट बीजगणित के प्रकारों में औपचारिक रूप दिया जाता है। उदाहरण के लिए, लिखते समय <math>f \colon X \to Y </math>, आशय यह है <math>X</math> और <math>Y</math> टाइप सिस्टम हैं, जबकि एरो <math>\to</math> एक प्रकार [[कंस्ट्रक्टर टाइप करें]] है, विशेष रूप से, फलन प्रकार या तीर प्रकार। इसी तरह, कार्तीय उत्पाद <math>X \times Y</math> प्रकार का निर्माण [[उत्पाद प्रकार]] कन्स्ट्रक्टर <math>\times</math> द्वारा किया जाता है. | ||
प्रकार-सैद्धांतिक दृष्टिकोण प्रोग्रामिंग भाषाओं जैसे एमएल (प्रोग्रामिंग भाषा) और उससे प्राप्त और | प्रकार-सैद्धांतिक दृष्टिकोण प्रोग्रामिंग भाषाओं जैसे एमएल (प्रोग्रामिंग भाषा) और उससे प्राप्त और [[सीएएमएल]], हास्केल (प्रोग्रामिंग भाषा) और एफ शार्प (प्रोग्रामिंग भाषा) प्रेरित भाषाओं में व्यक्त किया गया है | | ||
प्रकार-सैद्धांतिक दृष्टिकोण [[श्रेणी सिद्धांत]] की भाषा के लिए एक स्वाभाविक पूरक प्रदान करता है, जैसा कि नीचे चर्चा की गई है। ऐसा इसलिए है क्योंकि श्रेणियों, और विशेष रूप से, मोनोइडल श्रेणियों में एक [[आंतरिक भाषा]] होती है, जिसमें साधारण रूप से टाइप की गई लैम्ब्डा कैलकुलस ऐसी भाषा का सबसे प्रमुख उदाहरण है। यह इस संदर्भ में महत्वपूर्ण है, क्योंकि इसे एक प्रकार के कंस्ट्रक्टर, एरो टाइप से बनाया जा सकता है। इसके बाद | प्रकार-सैद्धांतिक दृष्टिकोण [[श्रेणी सिद्धांत]] की भाषा के लिए एक स्वाभाविक पूरक प्रदान करता है, जैसा कि नीचे चर्चा की गई है। ऐसा इसलिए है क्योंकि श्रेणियों, और विशेष रूप से, मोनोइडल श्रेणियों में एक [[आंतरिक भाषा]] होती है, जिसमें साधारण रूप से टाइप की गई लैम्ब्डा कैलकुलस ऐसी भाषा का सबसे प्रमुख उदाहरण है। यह इस संदर्भ में महत्वपूर्ण है, क्योंकि इसे एक प्रकार के कंस्ट्रक्टर, एरो टाइप से बनाया जा सकता है। इसके बाद कर्र्यींग भाषा को एक प्राकृतिक उत्पाद प्रकार प्रदान करती है। श्रेणियों और प्रकारों में वस्तुओं के बीच समतुल्यता तब प्रोग्रामिंग भाषाओं को लॉजिक्स (कर्र्यींग-हावर्ड समतुल्यता के माध्यम से) और अन्य प्रकार की गणितीय प्रणालियों के रूप में फिर से व्याख्या करने की अनुमति देता है, जैसा कि आगे की खोज की गई है। | ||
=== तर्क === | === तर्क === | ||
कर्र्यींग-हावर्ड समतुल्यता के तहत, कर्र्यींग और अनकर्र्यींग का अस्तित्व तार्किक प्रमेय <math>(A \land B) \to C \Leftrightarrow A \to (B \to C)</math> के बराबर है, टुपल्स (उत्पाद प्रकार) के रूप में तर्क में संयोजन के अनुरूप है, और फलन प्रकार निहितार्थ के समान होता है। | |||
घातीय वस्तु <math>Q^P</math> [[Heyting algebra|हेटिंग बीजगणित]] की श्रेणी में सामान्य रूप से [[सामग्री सशर्त]] <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>f \colon (X \times Y) \to Z </math> से [[रूपवाद (श्रेणी सिद्धांत)]] के बीच एक [[प्राकृतिक परिवर्तन]] समरूपता है। <math>g \colon X \to Z^Y </math>और एक घातीय वस्तु के लिए रुपवाद है . | |||
यह बंद [[मोनोइडल श्रेणी]] में एक व्यापक परिणाम के लिए सामान्यीकरण करता है: | यह बंद [[मोनोइडल श्रेणी]] में एक व्यापक परिणाम के लिए सामान्यीकरण करता है: कर्र्यींगइंग यह कथन है कि मोनोइडल श्रेणी और [[आंतरिक होम]] आसन्न फ़ैक्टर हैं; अर्थात् हर वस्तु के लिए <math>B</math> एक प्राकृतिक परिवर्तन है: | ||
:<math> \mathrm{Hom}(A\otimes B, C) \cong \mathrm{Hom}(A, B\Rightarrow C) .</math> | :<math> \mathrm{Hom}(A\otimes B, C) \cong \mathrm{Hom}(A, B\Rightarrow C) .</math> | ||
यहाँ, होम श्रेणी में सभी | यहाँ, होम श्रेणी में सभी आकारिता के (बाहरी) होम-फ़ंक्टर को दर्शाता है, जबकि <math>B\Rightarrow C</math> बंद मोनोइडल श्रेणी में आंतरिक होम फ़ैक्टर को दर्शाता है। समुच्चयों की श्रेणी के लिए, दोनों समान हैं। जब उत्पाद कार्तीय उत्पाद है, तो आंतरिक होम <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> | ||
इन दोनों के बीच का अंतर यह है कि कार्तीय श्रेणियों के लिए [[उत्पाद (गणित)]] (जैसे सेट की श्रेणी, पूर्ण आंशिक ऑर्डर या हेटिंग बीजगणित) केवल कार्तीय उत्पाद है; इसकी व्याख्या वस्तुओं की एक क्रमबद्ध जोड़ी (या एक सूची) के रूप में की जाती है। बस टाइप किया गया लैम्ब्डा कलन कार्तीय बंद श्रेणियों की आंतरिक भाषा है; और यह इस कारण से है कि जोड़े और सूचियाँ [[LISP|एलआईएसपी]], [[योजना (प्रोग्रामिंग भाषा)]] और कई कार्यात्मक प्रोग्रामिंग भाषाओं के प्रकार सिद्धांत में प्राथमिक प्रकार की प्रणाली हैं। | |||
इसके विपरीत, मोनोइडल श्रेणी के लिए उत्पाद (जैसे [[हिल्बर्ट अंतरिक्ष]] और कार्यात्मक विश्लेषण के वेक्टर रिक्त स्थान) टेंसर उत्पाद है। ऐसी श्रेणियों की आंतरिक भाषा रेखीय तर्क है, जो [[क्वांटम तर्क]] का एक रूप है; इसी प्रकार की प्रणाली रैखिक प्रकार की प्रणाली है। ऐसी श्रेणियां उलझी हुई क्वांटम अवस्थाओं का वर्णन करने के लिए उपयुक्त हैं, और, अधिक सामान्यतः, कर्र्यींग-हावर्ड समतुल्यता को [[क्वांटम यांत्रिकी]], बीजगणितीय टोपोलॉजी में [[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|आंशिक आवेदन}} | |||
आंशिक अनुप्रयोग के | कर्र्यींग और आंशिक कार्य अनुप्रयोग अधिकांश मिश्रित होते हैं।<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(1, 2, 3)</math> इस रूप में प्रदर्शित किया जा सकता है, नजदीकी कलन के मूल्यांकन <math>f_\text{curried}(1)(2)(3)</math> के रूप में प्रतिनिधित्व किया जाएगा, प्रत्येक तर्क को पिछले उत्क्रियण द्वारा लौटाए गए एकल-तर्क फलन के बदले में लागू करना है। ध्यान दें कि कॉल करने के बाद <math>f_\text{curried}(1)</math>, हम एक ऐसे फलन के साथ बचे हैं जो एक तर्क लेता है और दूसरा फलन देता है, ऐसा फलन नहीं जो दो तर्क लेता है। | |||
इसके विपरीत, आंशिक फलन एप्लिकेशन एक फलन के लिए कई तर्कों को ठीक करने की प्रक्रिया को संदर्भित करता है, जो कि छोटे आकार का एक और फ़ंक्शन उत्पन्न करता है। ऊपर दिए गए <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 के समान है ''inv''(''y'') = 1/''y'' द्वारा परिभाषित अपने तर्क का गुणक व्युत्क्रम लौटाता है। | ||
आंशिक अनुप्रयोग के लिए व्यावहारिक अभिप्रेरणा यह है कि अधिकांश किसी फलन के लिए सभी नहीं बल्कि कुछ तर्क देकर प्राप्त किए गए फलन उपयोगी होते हैं; उदाहरण के लिए, कई भाषाओं में <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(x,y)</math> दिया गया है, एक कलन <math>g(y,x)</math> इस प्रकार <math>g(y,x) = f(x,y)</math> परिभाषित किया जा सकता है. इस प्रकार, किसी भी आंशिक आवेदन को एक कर्र्यींग संचालन में घटाया जा सकता है। जैसे, कर्र्यींग को एक संचालन के रूप में अधिक उपयुक्त रूप से परिभाषित किया गया है, जो कई सैद्धांतिक स्थितियों में, अधिकांश पुनरावर्ती रूप से लागू होता है, लेकिन जो एक आंशिक अनुप्रयोग से सैद्धांतिक रूप से अप्रभेद्य है (जब एक संचालन के रूप में माना जाता है)। | |||
तो, एक आंशिक अनुप्रयोग को कुछ फलन के इनपुट के कुछ क्रम पर कर्र्यींग संचालिका के एकल अनुप्रयोग के उद्देश्य परिणाम के रूप में परिभाषित किया जा सकता है। | |||
== यह भी देखें == | == यह भी देखें == | ||
* टेंसर-होम संयोजन | * टेंसर-होम संयोजन | ||
* [[आलसी मूल्यांकन]] | * [[आलसी मूल्यांकन]] | ||
* क्लोजर ( | * क्लोजर (संगणक साइंस) | ||
* एसएमएन प्रमेय |{{subsup|S|n|m}}प्रमेय | * एसएमएन प्रमेय |{{subsup|S|n|m}}प्रमेय | ||
* बंद मोनोइडल श्रेणी | * बंद मोनोइडल श्रेणी | ||
Line 190: | Line 194: | ||
*अंक शास्त्र | *अंक शास्त्र | ||
* | *कलन (गणित) | ||
*आंशिक आवेदन | *आंशिक आवेदन | ||
*लैम्ब्डा कैलकुलस | *लैम्ब्डा कैलकुलस | ||
Line 197: | Line 201: | ||
*कार्तीय गुणन | *कार्तीय गुणन | ||
*समुच्चय सिद्धान्त | *समुच्चय सिद्धान्त | ||
* | *कलन स्थान | ||
*द्विभाजन | *द्विभाजन | ||
*अगर और केवल अगर | *अगर और केवल अगर | ||
Line 206: | Line 210: | ||
*टेंसर उत्पाद | *टेंसर उत्पाद | ||
*गुड़िया अनुक्रम | *गुड़िया अनुक्रम | ||
*जाली ( | *जाली (डोमेन) | ||
*होमोटॉपी प्रकार सिद्धांत | *होमोटॉपी प्रकार सिद्धांत | ||
* | *संचालिका साहचर्य | ||
*क्लोजर ( | *क्लोजर (संगणक साइंस) | ||
*प्रकार प्रणाली | *प्रकार प्रणाली | ||
* | *कलन प्रकार | ||
*सरल रूप से टाइप किया हुआ लैम्ब्डा कैलकुलस | *सरल रूप से टाइप किया हुआ लैम्ब्डा कैलकुलस | ||
*मोनोइडल श्रेणियां | *मोनोइडल श्रेणियां | ||
Line 219: | Line 223: | ||
*क्वांटम गणना | *क्वांटम गणना | ||
*बस टाइप किया हुआ लैम्ब्डा कैलकुलस | *बस टाइप किया हुआ लैम्ब्डा कैलकुलस | ||
*पूर्ण आंशिक | *पूर्ण आंशिक डोमेन | ||
*सदिश स्थल | *सदिश स्थल | ||
*रैखिक प्रकार प्रणाली | *रैखिक प्रकार प्रणाली | ||
Line 227: | Line 231: | ||
== बाहरी संबंध == | == बाहरी संबंध == | ||
{{Wiktionary|currying}} | {{Wiktionary|currying}} | ||
*[ | *[[wiki:CurryingSchonfinkelling|कर्र्यींगइंग Schonfinkelling]] at the [[Portland Pattern Repository]] | ||
*[http://lambda-the-ultimate.org/node/2266 | *[http://lambda-the-ultimate.org/node/2266 कर्र्यींगइंग != Generalized Partial Application!] - post at Lambda-the-Ultimate.org | ||
{{Design Patterns Patterns}} | {{Design Patterns Patterns}} | ||
[[Category: | [[Category:Articles with hatnote templates targeting a nonexistent page]] | ||
[[Category:Articles with short description]] | |||
[[Category:CS1 français-language sources (fr)]] | |||
[[Category:CS1 maint]] | |||
[[Category:CS1 Ελληνικά-language sources (el)]] | |||
[[Category:Citation Style 1 templates|W]] | |||
[[Category:Collapse templates]] | |||
[[Category:Created On 30/11/2022]] | [[Category:Created On 30/11/2022]] | ||
[[Category:Machine Translated Page]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates based on the Citation/CS1 Lua module]] | |||
[[Category:Templates generating COinS|Cite web]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates used by AutoWikiBrowser|Cite web]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Wikipedia fully protected templates|Cite web]] | |||
[[Category:Wikipedia metatemplates]] | |||
[[Category:उच्च क्रम के कार्य]] | |||
[[Category:कार्यात्मक प्रोग्रामिंग]] | |||
[[Category:जावा कोड के उदाहरण के साथ लेख]] | |||
[[Category:लैम्ब्डा कैलकुलस]] |
Latest revision as of 15:20, 29 December 2022
गणित और संगणक विज्ञान में, कर्र्यींग एक के मूल्यांकन का अनुवाद करने की विधि है जो फलनों के अनुक्रम (संगणक विज्ञान) का मूल्यांकन करने में कई तर्क लेता है, प्रत्येक एक तर्क के साथ है। उदाहरण के लिए, एक कलन जो तीन तर्क लेता है, जिससे एक स्थिर एकल फलन बनाता है, ताकि संकेत
संकेत के समान मान देता है
या क्रम में कहा जाता है,
गणितीय भाषा में अधिकतर, एक फलन जो दो तर्क लेता है, एक से और दूसरे से , और में आउटपुट उत्पन्न करता है कर्र्यींगइंग द्वारा एक फलन में अनुवादित किया जाता है जो से एकल तर्क लेता है और से तक आउटपुट फ़ंक्शन के रूप में उत्पन्न करता है। यह इन दो प्रकार के फलनों के बीच एक स्वाभाविक एक-से-एक समतुल्यता है, जिससे कि सेट (गणित) उनके बीच के फलनों के साथ एक कार्तीय बंद श्रेणी बनाते हैं। दो से अधिक तर्कों वाले फलन की कर्र्यींग को तब प्रेरण द्वारा परिभाषित किया जा सकता है। कर्र्यींग संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है।
कर्र्यींग करना व्यावहारिक और सैद्धांतिक दोनों स्थितियों में उपयोगी है। कार्यात्मक प्रोग्रामिंग भाषाओं और कई अन्य भाषाओं में, यह स्वचालित रूप से प्रबंधित करने का एक विधि प्रदान करता है कि फलन और अपवादों के लिए तर्क कैसे पास किए जाते हैं। सैद्धांतिक संगणक विज्ञान में, यह सरल सैद्धांतिक मॉडल में कई तर्कों के साथ फलनों का अध्ययन करने का एक विधि प्रदान करता है जो केवल एक तर्क प्रदान करता है। कर्र्यींग और अनकर्र्यींग की सख्त धारणा के लिए सबसे सामान्य सेटिंग बंद मोनोइडल श्रेणी में है, जो क्वांटम यांत्रिकी, कोबोर्डिज्म और स्ट्रिंग सिद्धांत सहित कई अन्य संरचनाओं के साथ समतुल्यता के लिए कर्र्यींग-हावर्ड समतुल्यता के सबूत और प्रोग्राम के विशाल सामान्यीकरण को रेखांकित करता है।[1] यह गोटलॉब फ्रेज द्वारा प्रस्तुत किया गया था,[2][3] मूसा शॉनफिंकेल द्वारा विकसित,[3][4][5][6] और आगे हास्केल कर्र्यींग द्वारा विकसित किया गया।[7][8]
अनकर्र्यींग द्वैत (गणित) को कर्र्यींग करने के लिए परिवर्तन है, और इसे निष्क्रियता के एक रूप के रूप में देखा जा सकता है। यह एक फलन (गणित) लेता है जिसका व्युत्क्रम मान एक और फलन है, और एक नया फलन उत्पन्न करता है जो पैरामीटर के रूप में दोनों के लिए तर्क लेता है, और परिणामस्वरूप उन तर्कों के लिए और बाद में,,का अनुप्रयोग करता है। और इस प्रक्रिया को पुनरावृत्त किया जा सकता है।
प्रेरणा
कर्र्यींग उन फलनों के साथ काम करने का एक विधि प्रदान करता है जो कई तर्क लेते हैं, और उन्हें संरचनाओं में उपयोग करते हैं जहां फलन केवल एक तर्क ले सकते हैं। उदाहरण के लिए, कुछ विश्लेषणात्मक विधियों को केवल एक ही तर्क वाले फलनों पर लागू किया जा सकता है। व्यावहारिक कार्य अधिकांश इससे अधिक तर्क लेते हैं। फ्रीज ने दिखाया कि यह एकल तर्क स्थितियों के लिए समाधान प्रदान करने के लिए पर्याप्त था, क्योंकि एक फलन को कई तर्कों के साथ एकल-तर्क फलनों की श्रृंखला में बदलना संभव था। यह परिवर्तन अब कर्र्यींग के रूप में जानी जाने वाली प्रक्रिया है।[9] गणितीय विश्लेषण या संगणक प्रोग्रामिंग में सामान्यतः सामने आने वाले सभी सामान्य फलनों को नियंत्रित किया जा सकता है। चूंकि, ऐसी श्रेणियां हैं जिनमें कर्र्यींग बनाना संभव नहीं है; कर्र्यींगने की अनुमति देने वाली सबसे सामान्य श्रेणियां बंद मोनोइडल श्रेणी हैं।
कुछ प्रोग्रामिंग भाषा लगभग हमेशा कई तर्कों को प्राप्त करने के लिए नजदीकी फलनों का उपयोग करती हैं; उल्लेखनीय उदाहरण एमएल (प्रोग्रामिंग भाषा) और हास्केल (प्रोग्रामिंग भाषा) हैं, जहां दोनों स्थितियों में सभी फलनों में बिल्कुल एक तर्क होता है। यह गुण लैम्ब्डा कलन से विरासत में मिली है, जहां बहु-तर्क फलनों को सामान्यतः घुमावदार रूप में दर्शाया जाता है।
कर्र्यींग संबंधित है, लेकिन आंशिक अनुप्रयोग के समान नहीं है। अभ्यास में, क्लोजर (संगणक प्रोग्रामिंग) की प्रोग्रामिंग विधि का उपयोग आंशिक अनुप्रयोग और एक प्रकार की कर्र्यींग करने के लिए किया जा सकता है, जो कर्र्यींग फलन के साथ यात्रा करने वाले वातावरण में तर्क छिपाकर करता है।
चित्रण
मान लीजिए हमारे पास एक कलन है जो दो वास्तविक संख्या () लेता है और वास्तविक संख्या को आउटपुट करता है, और इसके द्वारा परिभाषित किया जाता है. कर्र्यींग इसे एक कलन में अनुवादित करता है जो एक वास्तविक तर्क लेता है और से फलनों को आउटपुट करता है. प्रतीकों में, , जहाँ उन सभी फलनों के सेट को दर्शाता है जो एक वास्तविक तर्क लेते हैं और वास्तविक आउटपुट उत्पन्न करते हैं। प्रत्येक वास्तविक संख्या के लिए , फलन को परिभाषित करें द्वारा , और उसके बाद फलन द्वारा को परिभाषित करें. तो उदाहरण के लिए, वह फलन है जो अपना वास्तविक तर्क आउटपुट के लिए , या भेजता है. हम इसे सामान्य तौर पर देखते हैं
ताकि मूल फलन और इसकी कर्र्यींग बिल्कुल समान जानकारी व्यक्त करें। ऐसी स्थिति में हम लिखते भी हैं
यह दो से अधिक तर्कों वाले फलनों के लिए भी काम करता है। यदि तीन तर्कों का एक फलन था, इसकी कर्र्यींग यह गुण होगा
इतिहास
"कर्र्यींग" में "कर्र्यींग" तर्कशास्त्री हास्केल कर्र्यींग का एक संदर्भ है, जिन्होंने इस अवधारणा का व्यापक रूप से उपयोग किया था, लेकिन मोसेस शॉनफिंकेल को कर्र्यींग से 6 साल पहले यह विचार आया था।[10] वैकल्पिक नाम "शॉनफिंकेलाइजेशन" प्रस्तावित किया गया है।[11] गणितीय संदर्भ में, सिद्धांत को 1893 में गोटलॉब फ्रेज द्वारा काम करने के लिए वापस खोजा जा सकता है।[2][3]
कर्र्यींग शब्द का जनक स्पष्ट नहीं है। डेविड टर्नर (संगणक वैज्ञानिक) का कहना है कि यह शब्द क्रिस्टोफर स्ट्रेची द्वारा अपने 1967 के व्याख्यान नोट्स में मौलिक अवधारणाओं को प्रोग्रामिंग भाषाओं में गढ़ा गया था।[12] लेकिन यद्यपि अवधारणा का उल्लेख किया गया है, नोटों में कर्र्यींग शब्द प्रकट नहीं होता है।[4] जॉन सी रेनॉल्ड्स ने 1972 के पेपर में कर्र्यींग को परिभाषित किया, लेकिन इस शब्द को गढ़ने का दावा नहीं किया।[5]
परिभाषा
एक अनौपचारिक परिभाषा के साथ प्रारंभ करके कर्र्यींग को सबसे आसानी से समझा जा सकता है, जिसे बाद में कई अलग-अलग डोमेन में उपयुक्त करने के लिए बनाया जा सकता है। सबसे पहले, स्थापित करने के लिए कुछ संकेतन है। संकेतन और से से सभी फलन को दर्शाता है. यदि ऐसा एक फलन है, हम लिखते हैं . मान लीजिये के तत्वों के क्रमित जोड़े और को निरूपित करें वह है, और कार्तीय उत्पाद. यहां, और सेट हो सकते हैं, या वे प्रकार हो सकते हैं, या वे अन्य प्रकार के वस्तु हो सकते हैं, जैसा कि नीचे दिखाया गया है।
एक कलन दिया
- ,
कर्र्यींग एक नया फलन बनाता है
- .
अर्थात्, से तर्क लेता है और एक फलन देता है जो को पर मापता है. इसके द्वारा परिभाषित किया गया है
से और से के लिये. फिर हम भी लिखते हैं
अनकर्र्यींग व्युत्क्रम में परिवर्तन है, और इसे इसके दाहिने आसन्न फलन के संदर्भ में सबसे आसानी से समझा जाता है
सेट सिद्धांत
सेट सिद्धांत में, संकेतन सेट से फलनों के सेट (गणित) सेट पर को निरूपित करने के लिए उपयोग किया जाता है. कर्र्यींग सेट से फलनों की से के बीच प्राकृतिक समानता है, और सेट से फलनों की फलनों के सेट से से . प्रतीकों में:
वास्तविक में, यह प्राकृतिक आपत्ति है जो फलनों के सेट के लिए घातीय संकेतन को सही ठहराती है। जैसा कि कर्र्यींगने के सभी उदाहरणों में होता है, ऊपर दिया गया सूत्र एक सहायक कारक का वर्णन करता है: प्रत्येक निश्चित सेट के लिए , काम करनेवाला प्रकार्यक के पास छोड़ दिया जाता है.
सेट की श्रेणी में, गणितीय वस्तु घातीय वस्तु कहा जाता है।
कलन रिक्त स्थान
फलन रिक्त स्थान के सिद्धांत में, जैसे कि कार्यात्मक विश्लेषण या होमोटॉपी सिद्धांत में, सामान्यतः टोपोलॉजिकल स्पेस स्थान के बीच निरंतर फलनों में महत्त्व होती है। से तक सभी फलनो के सेट के लिए एक लिखता है, और निरंतर फलनों के सबसेट को दर्शाने के लिये संकेतन का उपयोग करता है (मैं एक आदमी के रूप में काम करता हूं) आक्षेप है
जबकि अनकर्र्यींग व्युत्क्रम चित्र है। यदि सेट से निरंतर फलनों की से विनिमेय-खुला टोपोलॉजी दी जाती है, और यदि स्पेस तब स्थानीय रूप से विनिमेय हौसडॉर्फ है
जब , और सघन से उत्पन्न होते हैं,[13]: chapter 5 [14] तो फिर एक होमियोमोर्फिज्म होगा, जबकि और भी स्थितियां हैं।[15][16]
एक उपयोगी उपप्रमेय यह है कि एक फलन निरंतर होता है यदि और केवल यदि इसका कर्र्यींगड रूप निरंतर हो तो ही निरंतर फलन होगा। एक अन्य महत्वपूर्ण परिणाम यह है कि अनुप्रयोग प्रतिचित्र, जिसे सामान्यतः इस संदर्भ में "मूल्यांकन" कहा जाता है, निरंतर है (ध्यान दें कि eval संगणक विज्ञान में एक पूरी तरह से अलग अवधारणा है।) अर्थात,
जब विनिमेय-खुला होता है और स्थानीय रूप से विनिमेय हौसडॉर्फ निरंतर फलन होता है।[17] होमोटॉपी की निरंतरता को स्थापित करने के लिए ये दो परिणाम केंद्रीय हैं, अर्थात जब इकाई अंतराल है, ताकि या तो दो फलनों से के होमोटॉपी के रूप में सोचा जा सकता है, या, समतुल्य, एक एकल (निरंतर) पथ है.
बीजगणितीय टोपोलॉजी
बीजगणितीय टोपोलॉजी में, कर्र्यींग एकमैन-हिल्टन द्वैत के उदाहरण के रूप में कार्य करता है, और, जैसे, विभिन्न सेटिंग्स में एक महत्वपूर्ण भूमिका निभाता है। उदाहरण के लिए, लूप स्पेस कम निलंबन के निकट है; इसे सामान्यतः इस रूप में लिखा जाता है
जहाँ चित्रों की होमोटॉपी कक्षाओं का सेट है , और का निलंबन (टोपोलॉजी) है, और का लूप स्पेस है। संक्षेप में, निलंबन के कार्तीय उत्पाद के रूप में देखा जा सकता है इकाई अंतराल के साथ, अंतराल को लूप में बदलने के लिए एक तुल्यता संबंध मॉड्यूल करें। कर्र्यींगड अवस्था फिर को लूप्स से में अर्थात् से में फ़ंक्शन के स्थान पर चित्रण करता है।[17] तब आसन्न फ़ंक्टर है जो लूप स्पेस के लिए निलंबन को चित्रण करता है, और अनकर्र्यींगइंग दोहरी है।[17]
चित्रण कोन (टोपोलॉजी) और चित्रण फाइबर (cofibration और कंपन) के बीच द्वंद्व[13]: chapters 6,7 को कर्र्यींगने के एक रूप के रूप में समझा जा सकता है, जो बदले में लंबे यथार्थ अनुक्रम और कॉक्सैक्ट पपी अनुक्रमों के द्वंद्व की ओर जाता है।
समरूप बीजगणित में, कर्र्यींग और अनकर्र्यींग के बीच संबंध को टेंसर-होम संयोजन के रूप में जाना जाता है। यहाँ, एक महत्वपूर्ण मोड़ उत्पन्न होता है: होम फ़ंक्टर और टेन्सर उत्पाद फ़ंक्टर एक यथार्थ क्रम में (गणित) नहीं उठा सकते हैं; यह ईएक्सटी फ़ैक्टर और टोर फ़ैक्टर की परिभाषा की ओर ले जाता है।
डोमेन सिद्धांत
डोमेन सिद्धांत में, अर्थात्, आंशिक रूप से डोमेनित सेटों के जाली (क्रम) का सिद्धांत, एक सतत कार्य है जब जाली को स्कॉट टोपोलॉजी दिया जाता है।[18] लैम्ब्डा कलन के लिए शब्दार्थ प्रदान करने के प्रयास में स्कॉट-निरंतर फलनों की पहली बार जांच की गई थी (जैसा कि सामान्य सेट सिद्धांत ऐसा करने के लिए अपर्याप्त है)। अधिक सामान्यतः, स्कॉट-निरंतर फलनों का अध्ययन अब डोमेन सिद्धांत में किया जाता है, जिसमें संगणक कलन विधि के सांकेतिक शब्दार्थ का अध्ययन सम्मिलित है। ध्यान दें कि स्कॉट टोपोलॉजी टोपोलॉजिकल स्पेस की श्रेणी में आने वाली कई सामान्य टोपोलॉजी से काफी अलग है; स्कॉट टोपोलॉजी सामान्यतः अंतिम टोपोलॉजी है, और शांत स्थान नहीं है।
निरंतरता की धारणा होमोटोपी प्रकार के सिद्धांत में प्रकट होती है, जहां, साधारणतः बोल, दो संगणक प्रोग्रामों को होमोटोपिक माना जा सकता है, अर्थात समान परिणामों की गणना करें, यदि वे एक से दूसरे में लगातार संकेत रीफैक्टरिंग कर सकते हैं।
लैम्ब्डा गणना
सैद्धांतिक संगणक विज्ञान में, कर्र्यींग लैम्ब्डा कलन जैसे बहुत ही सरल सैद्धांतिक मॉडल में कई तर्कों के साथ फलनों का अध्ययन करने का एक विधि प्रदान करता है, जिसमें फलन केवल एक तर्क लेते हैं। दो तर्कों को लेकर एक कलन पर विचार करें, और प्रकार रखना, जिसका अर्थ यह समझा जाना चाहिए कि x का प्रकार होना चाहिए, और y का प्रकार होना चाहिए, और फलन स्वयं प्रकार लौटाता है. F के कढ़ी रूप को परिभाषित किया गया है
जहाँ लैम्ब्डा गणना का अमूर्त है। चूंकि कर्र्यींग, इनपुट के रूप में, प्रकार के साथ कार्य करती है, कोई यह निष्कर्ष निकालता है कि कर्र्यींग का प्रकार ही है
→ संचालिका को अधिकांश सही सहयोगी माना जाता है, इसलिए कर्र्यींग फलन प्रकार अधिकांश के रूप में लिखा जाता है. इसके विपरीत, कलन आवेदन को संचालिका सहयोगीता माना जाता है | बाएं-सहयोगी, ताकि के बराबर है
- .
अर्थात्, आवेदन के क्रम को स्पष्ट करने के लिए कोष्ठक की आवश्यकता नहीं है।
नजदीकी फलनों का उपयोग किसी भी प्रोग्रामिंग भाषा में किया जा सकता है जो क्लोजर (संगणक विज्ञान) का समर्थन करता है; चूंकि, अनिश्चित फलनों को सामान्यतः दक्षता कारणों से पसंद किया जाता है, क्योंकि आंशिक अनुप्रयोग के ऊपरी हिस्से और बंद करने के निर्माण को अधिकांश फलन कॉलों के लिए टाला जा सकता है।
प्रकार सिद्धांत
प्रकार के सिद्धांत में, संगणक विज्ञान में एक प्रकार की प्रणाली के सामान्य विचार को एक विशिष्ट बीजगणित के प्रकारों में औपचारिक रूप दिया जाता है। उदाहरण के लिए, लिखते समय , आशय यह है और टाइप सिस्टम हैं, जबकि एरो एक प्रकार कंस्ट्रक्टर टाइप करें है, विशेष रूप से, फलन प्रकार या तीर प्रकार। इसी तरह, कार्तीय उत्पाद प्रकार का निर्माण उत्पाद प्रकार कन्स्ट्रक्टर द्वारा किया जाता है.
प्रकार-सैद्धांतिक दृष्टिकोण प्रोग्रामिंग भाषाओं जैसे एमएल (प्रोग्रामिंग भाषा) और उससे प्राप्त और सीएएमएल, हास्केल (प्रोग्रामिंग भाषा) और एफ शार्प (प्रोग्रामिंग भाषा) प्रेरित भाषाओं में व्यक्त किया गया है |
प्रकार-सैद्धांतिक दृष्टिकोण श्रेणी सिद्धांत की भाषा के लिए एक स्वाभाविक पूरक प्रदान करता है, जैसा कि नीचे चर्चा की गई है। ऐसा इसलिए है क्योंकि श्रेणियों, और विशेष रूप से, मोनोइडल श्रेणियों में एक आंतरिक भाषा होती है, जिसमें साधारण रूप से टाइप की गई लैम्ब्डा कैलकुलस ऐसी भाषा का सबसे प्रमुख उदाहरण है। यह इस संदर्भ में महत्वपूर्ण है, क्योंकि इसे एक प्रकार के कंस्ट्रक्टर, एरो टाइप से बनाया जा सकता है। इसके बाद कर्र्यींग भाषा को एक प्राकृतिक उत्पाद प्रकार प्रदान करती है। श्रेणियों और प्रकारों में वस्तुओं के बीच समतुल्यता तब प्रोग्रामिंग भाषाओं को लॉजिक्स (कर्र्यींग-हावर्ड समतुल्यता के माध्यम से) और अन्य प्रकार की गणितीय प्रणालियों के रूप में फिर से व्याख्या करने की अनुमति देता है, जैसा कि आगे की खोज की गई है।
तर्क
कर्र्यींग-हावर्ड समतुल्यता के तहत, कर्र्यींग और अनकर्र्यींग का अस्तित्व तार्किक प्रमेय के बराबर है, टुपल्स (उत्पाद प्रकार) के रूप में तर्क में संयोजन के अनुरूप है, और फलन प्रकार निहितार्थ के समान होता है।
घातीय वस्तु हेटिंग बीजगणित की श्रेणी में सामान्य रूप से सामग्री सशर्त के रूप में लिखा जाता है. वितरण हेटिंग बीजगणित बूलियन बीजगणित हैं, और घातीय वस्तु का स्पष्ट रूप है, इस प्रकार यह स्पष्ट करता है कि घातीय वस्तु वास्तव में भौतिक निहितार्थ (अनुमान का नियम) है।[19]
श्रेणी सिद्धांत
कर्र्यींगइंग और अनकर्र्यींग की उपरोक्त धारणाएं श्रेणी सिद्धांत में उनके सबसे सामान्य, अमूर्त कथन को खोजती हैं। कर्र्यींगइंग एक घातीय वस्तु की एक सार्वभौमिक गुण है, और कार्तीय बंद श्रेणी में एक संयोजन (श्रेणी सिद्धांत) को जन्म देती है। अर्थात्, एक बाइनरी उत्पाद (श्रेणी सिद्धांत) से रूपवाद (श्रेणी सिद्धांत) के बीच एक प्राकृतिक परिवर्तन समरूपता है। और एक घातीय वस्तु के लिए रुपवाद है .
यह बंद मोनोइडल श्रेणी में एक व्यापक परिणाम के लिए सामान्यीकरण करता है: कर्र्यींगइंग यह कथन है कि मोनोइडल श्रेणी और आंतरिक होम आसन्न फ़ैक्टर हैं; अर्थात् हर वस्तु के लिए एक प्राकृतिक परिवर्तन है:
यहाँ, होम श्रेणी में सभी आकारिता के (बाहरी) होम-फ़ंक्टर को दर्शाता है, जबकि बंद मोनोइडल श्रेणी में आंतरिक होम फ़ैक्टर को दर्शाता है। समुच्चयों की श्रेणी के लिए, दोनों समान हैं। जब उत्पाद कार्तीय उत्पाद है, तो आंतरिक होम घातीय वस्तु बन जाती है.
कर्र्यींग दो तरह से टूट सकती है। एक यह है कि यदि कोई श्रेणी बंद श्रेणी नहीं है, और इस प्रकार एक आंतरिक होम फ़ैक्टर की कमी है (संभवतः क्योंकि इस तरह के फ़ैक्टर के लिए एक से अधिक विकल्प हैं)। दूसरा विधि यह है कि यदि यह मोनोइडल श्रेणी नहीं है, और इस प्रकार एक उत्पाद की कमी है (अर्थात, वस्तुओं के जोड़े को लिखने का एक विधि नहीं है)। जिन श्रेणियों में उत्पाद और आंतरिक होम दोनों होते हैं, वे बिल्कुल बंद मोनोइडल श्रेणियां हैं।
पारंपरिक तर्क की वाद विवाद के लिए कार्तीय बंद श्रेणियों की सेटिंग पर्याप्त है; बंद मोनोइडल श्रेणियों की अधिक सामान्य सेटिंग क्वांटम संगणना के लिए उपयुक्त है।[20]
इन दोनों के बीच का अंतर यह है कि कार्तीय श्रेणियों के लिए उत्पाद (गणित) (जैसे सेट की श्रेणी, पूर्ण आंशिक ऑर्डर या हेटिंग बीजगणित) केवल कार्तीय उत्पाद है; इसकी व्याख्या वस्तुओं की एक क्रमबद्ध जोड़ी (या एक सूची) के रूप में की जाती है। बस टाइप किया गया लैम्ब्डा कलन कार्तीय बंद श्रेणियों की आंतरिक भाषा है; और यह इस कारण से है कि जोड़े और सूचियाँ एलआईएसपी, योजना (प्रोग्रामिंग भाषा) और कई कार्यात्मक प्रोग्रामिंग भाषाओं के प्रकार सिद्धांत में प्राथमिक प्रकार की प्रणाली हैं।
इसके विपरीत, मोनोइडल श्रेणी के लिए उत्पाद (जैसे हिल्बर्ट अंतरिक्ष और कार्यात्मक विश्लेषण के वेक्टर रिक्त स्थान) टेंसर उत्पाद है। ऐसी श्रेणियों की आंतरिक भाषा रेखीय तर्क है, जो क्वांटम तर्क का एक रूप है; इसी प्रकार की प्रणाली रैखिक प्रकार की प्रणाली है। ऐसी श्रेणियां उलझी हुई क्वांटम अवस्थाओं का वर्णन करने के लिए उपयुक्त हैं, और, अधिक सामान्यतः, कर्र्यींग-हावर्ड समतुल्यता को क्वांटम यांत्रिकी, बीजगणितीय टोपोलॉजी में सहबोर्डवाद और स्ट्रिंग सिद्धांत के लिए एक विशाल सामान्यीकरण की अनुमति देती हैं।[1] रेखीय प्रकार प्रणाली, और रेखीय तर्क तुल्यकालन आदिमों का वर्णन करने के लिए उपयोगी होते हैं, जैसे पारस्परिक बहिष्करण ताले, और वेंडिंग मशीनों का संचालन।
आंशिक फलन आवेदन के साथ तुलना करें
कर्र्यींग और आंशिक कार्य अनुप्रयोग अधिकांश मिश्रित होते हैं।[21] दोनों के बीच महत्वपूर्ण अंतरों में से एक अंतर यह है कि आंशिक रूप से लागू किए गए फलन के लिए कॉल तुरंत परिणाम देता है, कर्र्यींग श्रृंखला के नीचे कोई अन्य फलन नहीं; इस भेद को उन फलनों के लिए स्पष्ट रूप से चित्रित किया जा सकता है जिनकी संख्या दो से अधिक है।[22]
प्रप्रकार के एक फलन को देखते हुए, कर्र्यींग उत्पन करता है. अर्थात्, जबकि पहले फलन का मूल्यांकन इस रूप में प्रदर्शित किया जा सकता है, नजदीकी कलन के मूल्यांकन के रूप में प्रतिनिधित्व किया जाएगा, प्रत्येक तर्क को पिछले उत्क्रियण द्वारा लौटाए गए एकल-तर्क फलन के बदले में लागू करना है। ध्यान दें कि कॉल करने के बाद , हम एक ऐसे फलन के साथ बचे हैं जो एक तर्क लेता है और दूसरा फलन देता है, ऐसा फलन नहीं जो दो तर्क लेता है।
इसके विपरीत, आंशिक फलन एप्लिकेशन एक फलन के लिए कई तर्कों को ठीक करने की प्रक्रिया को संदर्भित करता है, जो कि छोटे आकार का एक और फ़ंक्शन उत्पन्न करता है। ऊपर दिए गए की परिभाषा को देखते हुए, हम प्रकार के फ़ंक्शन का निर्माण करते हुए, पहले तर्क को ठीक (या 'बाइंड') कर सकते हैं। इस कलन के मूल्यांकन के रूप में प्रतिनिधित्व किया जा सकता है. ध्यान दें कि इस स्थितियों में आंशिक फलन एप्लिकेशन का परिणाम एक ऐसा फलन है जो दो तर्क लेता है।
सहज रूप से, आंशिक फ़ंक्शन एप्लिकेशन कहता है "यदि आप फ़ंक्शन के पहले तर्क को ठीक करते हैं, तो आपको शेष तर्कों का एक फलन मिलता है"। उदाहरण के लिए, यदि फलन div डिवीजन संचालन x/y के लिए खड़ा है, तो पैरामीटर x के साथ div 1 पर तय किया गया है (अर्थात्, div 1) एक और फलन है: फलन inv के समान है 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
बाहरी संबंध
- कर्र्यींगइंग Schonfinkelling at the Portland Pattern Repository
- कर्र्यींगइंग != Generalized Partial Application! - post at Lambda-the-Ultimate.org