what the Comonad typeclass is in Haskell के बारे में कुछ विचार रखने के बाद, मैंने स्टोर कॉमोनैड के बारे में सुना है। लेकिन Control.Comonad.Store.Lazy पर देखकर, मुझे वास्तव में यह नहीं मिलता है। इसका क्या मतलब है? ये किसके लिये है? मैंने सुना है कि स्टोर = CoState, राज्य Monad के दोहरे। इसका क्या मतलब है?स्टोर कॉमोनड क्या है?
उत्तर
यदि आप StoreT itself की परिभाषा को देखते हैं तो यह बहुत आसान है।
आप इसे एक बड़ी संरचना में "स्थान" के रूप में सोच सकते हैं। उदाहरण के लिए, lens बस a -> Store b a
है; आपको बी फ़ील्ड का मान मिलता है, और एक नया मान वापस बड़े संदर्भ में रखने के लिए b -> a
पर फ़ंक्शन मिलता है।
अपनी सरल, गैर ट्रांसफार्मर रूप में यह ध्यान में रखते हुए:
data Store s a = Store (s -> a) s
instance Functor (Store s) where
fmap f (Store g s) = Store (f . g) s
instance Extend (Store s) where
duplicate (Store f s) = Store (Store f) s
instance Comonad (Store s) where
extract (Store f s) = f s
यानी duplicate
बदल जाता है एक s -> Store s a
कि सिर्फ मूल्य बदलने के बाद "अद्यतन" जगह रिटर्न में s -> a
, और extract
मूल एक पुनर्स्थापित करता है मूल्य को वापस बड़े ढांचे में रख कर।
जहां तक राज्य के साथ उसके संबंध हो जाता है, तो आप इस तरह इसे देख सकता है:
type State s a = s -> (a, s)
type Store s a = (s -> a, s)
दुकान के निम्नलिखित परिभाषा को देखते हुए,
data Store s a = Store { peek :: s -> a, pos :: s }
मैं एक Store
के रूप में के बारे में सोचना चाहते a
प्रकार के मूल्यों से भरा एक बड़ा गोदाम। a
के प्रत्येक मान को s
के इंडेक्स मान द्वारा लेबल की गई स्थिति में रखा गया है। अंत में pos
पर पार्क किया गया फोर्कलिफ्ट है। फोर्कलिफ्ट का इस्तेमाल extract
पर किया जा सकता है, जहां से इसे पार्क किया गया है, वहां से मूल्य खींचकर स्टोर से a
का मूल्य। फ़ोर्कलिफ्ट को एक नई पूर्ण स्थिति में स्थानांतरित करने के लिए seek
का उपयोग कर सकते हैं या फोर्कलिफ्ट को एक नए सापेक्ष स्थान पर ले जाने के लिए seeks
का उपयोग कर सकते हैं। स्टोर के सभी मूल्यों को अद्यतन करने के लिए fmap
का उपयोग करें। अंत में extend f
fmap
के समान है f :: a -> a'
के बजाय हमारे पास f :: Store s a -> a'
है जो अद्यतन फ़ंक्शन को केवल अद्यतन होने वाले मूल्य तक पहुंच नहीं देता है बल्कि स्टोर की स्थिति तक पहुंच प्रदान करता है और स्टोर में अन्य सभी चीज़ों के मूल्य तक पहुंच प्रदान करता है। दूसरे शब्दों में, extend
अद्यतन करने के लिए मूल्य और उसके आस-पास के संदर्भ का उपयोग करता है।
एक और कम्प्यूटरी समरूपता Store
को हार्ड डिस्क की एक बड़ी प्लेटर के रूप में विभिन्न पदों पर संग्रहीत मूल्यों के साथ, और एक विशेष स्थिति में पार्क किए गए सिर के साथ सोचने के लिए होगी।
- 1. स्टोर बफर क्या है?
- 2. sampler2d स्टोर क्या करता है?
- 3. क्या गिट-एसवीएन स्टोर एसवीएन पासवर्ड है?
- 4. किसी सत्र में स्टोर करना क्या है?
- 5. क्या आईओएस ऐप स्टोर
- 6. सत्र स्टोर कहलाता है?
- 7. बंडलर स्टोर रत्न कहां है?
- 8. एंड्रॉइड स्टोर SQLite का डेटाबेस संस्करण कहां स्टोर करता है?
- 9. टाइमज़ोन स्टोर करने के लिए उपयुक्त डेटा प्रकार क्या है?
- 10. क्या उपयोगकर्ता ऑब्जेक्ट को कुकी में स्टोर करना सुरक्षित है?
- 11. ढेर और मुफ्त स्टोर के बीच क्या अंतर है?
- 12. क्या कुकीज़ में पासवर्ड स्टोर करना सुरक्षित है?
- 13. मैक ओएस/लाइब्रेरी फ़ोल्डर स्टोर क्या करता है?
- 14. जांचें कि क्या स्टोर (या रिकॉर्ड) संपादित किया गया है?
- 15. क्या डेटाबेस में जावास्क्रिप्ट को स्टोर करना संभव है?
- 16. क्या मुझे अमेज़ॅन ऐप स्टोर से INSTALL_REFERRER इरादा मिलता है?
- 17. क्या डेटाबेस में प्रस्तुति डेटा स्टोर करना ठीक है?
- 18. क्या डेटाबेस में लंबे तारों को स्टोर करना अच्छा है?
- 19. क्या आईओएस ऐप स्टोर ऑनलाइन खोजने का कोई तरीका है?
- 20. जन्मदिन को स्टोर करने का सबसे अच्छा क्षेत्र क्या है?
- 21. बिगटेबल पर कुंजी-मूल्य स्टोर का क्या फायदा है?
- 22. एनएसएनंबर स्टोर करने का सबसे बड़ा मूल्य क्या है?
- 23. दस्तावेज़ स्टोर का सबसे अच्छा उपयोग क्या है?
- 24. क्या विंडोज 8 स्टोर ऐप्स में मैसेजबॉक्स समकक्ष है?
- 25. विंडोज सर्टिफिकेट स्टोर के क्या फायदे हैं?
- 26. ईक्लीप्स स्टोर साइटों की स्टोर कहां सूचीबद्ध करता है? और क्या इसे दूसरी स्थापना में कॉपी किया जा सकता है?
- 27. ट्रस्ट स्टोर बनाम कुंजी स्टोर - कीटोल
- 28. अमेज़ॅन ईसी 2 - उदाहरण स्टोर स्टोर डिवाइस
- 29. कॉलम पारिवारिक स्टोर बनाम दस्तावेज़ स्टोर
- 30. ऐप स्टोर
बस राज्य और स्टोर के बीच कनेक्शन पर विस्तार करने के लिए, सभी monads आसन्न functors की संरचना से उत्पन्न होता है। यह आमतौर पर ज्ञात है कि मकानकारियों '(आर -> _) '(उर्फ रीडर) और' (_, आर) '(फ़्लिप किए गए काम भी हैं, लेकिन हास्केल में राज्य की सामान्य प्रस्तुति में फिट नहीं हैं, और यह नहीं हो सकता हास्केल में फंक्टर इंस्टेंस) निकट हैं, और यदि आप उन्हें एक तरह से लिखते हैं ('s -> (_, s)') आपको एक मोनड मिलेगा, और यदि आप उन्हें दूसरी तरफ लिखते हैं ('(s -> _, एस) ') आप एक कॉमोनड प्राप्त करेंगे। – copumpkin
@ कॉपम्पकिन: यह '(_, आर) 'है जो एक फंक्टर नहीं हो सकता है, है ना? '(आर, _)' सिर्फ 'उदाहरण फंक्शन ((,) आर) 'है। – ehird
हाँ, क्षमा करें, मैंने उस मूलभूत टिप्पणी को गलत तरीके से संपादित किया :) – copumpkin