बाइनरी फ़ंक्शंस के निरंतरता परिवर्तन


13

निरंतरता गुजर याद को बदलने (सीपीएस को बदलने) जो लेता है करने के लिए बीटा एक : = आर आर (जहां आर तय हो गई है) और : एक बी को बीटा : बीटा एक बीटा बी द्वारा परिभाषित बीटाAβA:=RRARf:ABβf:βAβB वास्तव में हमारे पासइकाईसाथनिरंतरताहै।द्वारा परिभाषित है और गुणनकोद्वारा परिभाषित किया गया

βfκr:=κ(rf).
η एक एक्स : = λ आर आरηA:AβAμ एक : बीटा ( बीटा एक ) बीटा एक μ एक
ηAx:=λr.rx
μA:β(βA)βA
μAKr:=K(λf.fr).

अब हम कैसे हम एक बदल सकता है के बारे में सोचते हैं द्विआधारी नक्शा , यानी, हम चाहते हैं । एक तेज़ी से यह एक प्रोग्रामिंग दृष्टिकोण से भी समझ में आता है।γ : बीटा एक बीटा बी बीटा सी γf:ABCγf:βAβBβC

γfκνr:=κ(λx.β(fx)νr).

यहाँ मेरा सवाल है: क्या लिए एक गहरा कारण है , इस तथ्य के अलावा कि यह एक प्रोग्रामिंग दृष्टिकोण से सही लगता है? उदाहरण के लिए, क्या कोई श्रेणी-सिद्धांत या अन्य "सैद्धांतिक" कारण यह सोचने के लिए है कि समझ में आता है? उदाहरण के लिए, क्या हम मठ से व्यवस्थित तरीके से Gamma बना सकते हैं?γ γγγγ

मैं का सीपीएस रूपांतरण में एक अंतर्दृष्टि रहा हूँ -ary कार्य करता है।n


2
क्या आप हास्केल liftM2या सामान्यीकरण से परे कुछ खोज रहे हैं Applicative? आप जो भी वर्णन करते हैं उसका एक एन-एरी संस्करण प्राप्त कर सकते हैं (एक भाषा में जो आपको एन-आर्य पॉलीमॉर्फिक फ़ंक्शन के बारे में बात करने देता है) निरंतरता से लागू होता है।
कॉप्पकिन

1
मुझे पता है कि इन सामान्यीकरणों को कैसे लिखना है, मैं जानना चाहता हूं कि वे ऐसे क्यों हैं। श्रेणी सिद्धांतकार समझेंगे कि मैं क्या पूछ रहा हूं।
बेमिसाल बाउर

1
हम्म, बाहर इशारा करने के लिए धन्यवाद Applicative। इसके पास liftA2मेरा , hackage.haskell.org/packages/archive/base/4.2.0.0/doc/html/…-γ
Andrej Bauer

3
हाँ, liftA2मैं जो सुझाव दे रहा था उसका एक हिस्सा था। "मुहावरा ब्रैकेट" धारणा (से (| f x y z ... |)अनुवाद pure f <*> x <*> y <*> z <*> ...) Applicativeआपके प्रश्न के एन-आर्य रूप को प्राप्त करने के लिए व्यवस्थित तरीके की तरह लगता है। मैं सीटी जानता हूं, लेकिन मानक प्रोग्रामिंग शब्दों में इसके बारे में बात करना सबसे सरल लग रहा था। यदि आप पहले नहीं आए थे Applicative, तो आप लक्स मोनॉयडल फंक्शनलर्स को देखना चाह सकते हैं (हालाँकि हास्केल के इस बयान में <*>एक्सपोनेंशियल भी शामिल है)। वैसे भी, मेरे पास आपके लिए कोई जवाब नहीं है, लेकिन आप जो कुछ भी हासिल कर रहे हैं, उसे बेहतर ढंग से समझने की कोशिश कर रहे हैं :)
कॉप्पकिन

2
हेओ थिएलेके की पीएचडी थीसिस सीपीएस की स्पष्ट संरचना पर है। हो सकता है कि जवाब वहाँ या उसके अन्य प्रकाशनों में निहित हो। cs.bham.ac.uk/~hxt/research/hayo-thielecke-publications.shtml
डेव क्लार्क

जवाबों:


7

इस सवाल का जवाब देने के लिए सबसे नज़दीकी मैंने डॉक्टर मेलीअस की गैलरी में पहली तस्वीर दिखाई है , ~~ A * ~~ B | - ~~ (A * B) जो मानचित्र को दर्शाती है कि नक्शे में जो किसी भी संवाद श्रेणी में मौजूद है (यानी, एक निश्चित श्रेणी में बंद होने के साथ एक एकल श्रेणी)। ध्यान दें कि सामान्य बाइनरी फ़ंक्शन के बाएं से दाएं सीपीएस रूपांतरण इस नक्शे को लागू करने के लिए कम हो जाता है और फिर दोहरे-नकार मोनाड के फंक्शनल एक्शन के साथ रचना करता है।

¬¬A¬¬B¬¬(AB)

चित्रण मूल रूप से स्ट्रिंग आरेखों के मानक सम्मेलनों (तारों के ध्रुवीकरणों का अनुसरण करता है , जो नियंत्रण के प्रवाह को इंगित करने के लिए हैं)। विशेष रूप से, नक्शा तीन चरणों में निर्मित किया जाता है: दो बार नकारात्मक स्व-स्थापन से प्रेरित मोनड की ताकत ( ) को लागू करना, और फिर adjunction ( ) के counit को लागू करना । अमूर्तता के इस स्तर पर, व्युत्पत्ति किसी भी मज़बूत सनद को जन्म देती है, और तब आप इस तरह के सहायक के अधिक अमूर्त लक्षण वर्णन के लिए पूछ सकते थे, जिसके बारे में मेलीअस ने भी लिखा हैεκϵ


4

नोआम का जवाब:

f:ABCuncurry(f):A×BCTdblstr:TA×TBT(A×B)

TA×TBdblstrT(A×B)uncurry(f)TC

यदि हम इसे निरंतरता के लिए तैयार करते हैं, तो हम आपका निर्माण प्राप्त करते हैं।

n

πnπstrπ:TA1××TAnT(A1××An)nf:A1××AnCγf:TA1××TAnstrπT(A1××An)TfTC

लेकिन मुझे अभी भी नहीं लगता कि यह वास्तव में आपको वह उत्तर देता है जिसकी आप तलाश कर रहे हैं ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.