मैं अपने आप से गहराई से समझने वाले किसी व्यक्ति से सुनना चाहता हूं कि मौलिक मतभेद Enumerators, Conduits, और Pipes के साथ-साथ प्रमुख लाभ और दोषों के बीच हैं। कुछ discussion's alreadyongoing लेकिन उच्च स्तर का अवलोकन होना अच्छा लगेगा।एन्युमरेटर्स बनाम कंडीशंस बनाम पाइप्स के पेशेवरों और विपक्ष क्या हैं?
उत्तर
ूगणकों/एक अमूर्त रूप में Iteratees ओलेग Kiselyov द्वारा आविष्कार किया गया। वे अनुमानित (कम) संसाधन आवश्यकताओं के साथ आईओ करने का एक साफ तरीका प्रदान करते हैं। वर्तमान एन्युमरेटर पैकेज ओलेग के मूल कार्य के बहुत करीब है।
यसोड वेब ढांचे के लिए कंडिट बनाए गए थे। मेरी समझ यह है कि वे तेजी से तेज होने के लिए डिजाइन किए गए थे। पुस्तकालय के शुरुआती संस्करण बेहद सतर्क थे।
पाइप्स लालित्य पर ध्यान केंद्रित करते हैं। उनके पास कई, फॉर्म मोनैड (ट्रांसफॉर्मर) और श्रेणी के उदाहरणों के बजाय केवल एक प्रकार है, और डिजाइन में बहुत "कार्यात्मक" हैं।
आप स्पष्ट स्पष्टीकरण की तरह हैं: Pipe
प्रकार निम्नलिखित धर्मभ्रष्ट सरल functor
data PipeF a b m r = M (m r) | Await (a -> r) | Yield b r
instance Monad m => Functor (PipeF a b m) where
fmap f (M mr) = M $ liftM mr
fmap f (Await g) = Await $ f . g
fmap f (Yield b p) = Yield b (f p)
--Giving:
newtype Pipe a b m r = Pipe {unPipe :: Free (PipeF a b m) r}
deriving (Functor, Applicative, Monad)
--and
instance MonadTrans (Pipe a b) where
lift = Pipe . inj . M
वास्तविक पाइप परिभाषा इन में पकाया जाता है से अधिक सिर्फ मुक्त इकाई है, लेकिन इस परिभाषा की सादगी अद्भुत है। पाइप ऑपरेशन (<+<) :: Monad m => Pipe c d m r -> Pipe a b m r -> Pipe a d m r
के तहत एक श्रेणी बनाते हैं जो पहले पाइप yields
लेता है और इसे दूसरे पाइप की प्रतीक्षा में खिलाता है।
ऐसा लगता है कि Conduits
और की तरह अधिक Pipe
होने के लिए आगे बढ़ रहा है (सीपीएस उपयोग करने के बजाय राज्य की, और एक ही प्रकार का उपयोग करने जा), जबकि पाइप्स बेहतर त्रुटि से निपटने के लिए समर्थन प्राप्त कर रहे हैं, जनरेटर और उपभोक्ताओं के लिए अलग प्रकार के शायद वापसी ।
यह क्षेत्र तेज़ी से आगे बढ़ रहा है। मैं इन सुविधाओं के साथ पाइप लाइब्रेरी के एक प्रयोगात्मक संस्करण पर हैकिंग कर रहा हूं, और अन्य लोगों को भी पता है (हैकेज पर संरक्षित पाइप पैकेज देखें), लेकिन संदेह है कि गेब्रियल (पाइप्स के लेखक) उन्हें पहले बताएंगे कर।
मेरी सिफारिशें: यदि आप यसोड का उपयोग कर रहे हैं, तो कंडिट का उपयोग करें। यदि आप परिपक्व लाइब्रेरी का उपयोग एन्यूमेरेटर चाहते हैं। यदि आप मुख्य रूप से लालित्य की परवाह करते हैं, तो पाइप का उपयोग करें।
सभी तीन पुस्तकालयों के साथ आवेदन पत्र लिखने के बाद, मुझे लगता है कि सबसे बड़ा अंतर यह मैंने देखा है कि कैसे संसाधन को अंतिम रूप देने नियंत्रित किया जाता है में है। उदाहरण के लिए, पाइप्स विभिन्न प्रकार के फ्रेम्स और स्टैक्स में संसाधन अंतिम रूप को तोड़ देता है।
वहाँ भी अभी भी के बारे में कैसे न केवल इनपुट संसाधन को अंतिम रूप देने में कुछ विवाद हो रहा है, लेकिन यह भी संभावित उत्पादन संसाधन। उदाहरण के लिए, यदि आप डीबी से पढ़ रहे हैं और फ़ाइल में लिख रहे हैं, तो डीबी के कनेक्शन को बंद करने की आवश्यकता है और आउटपुट फ़ाइल को फ्लश और बंद करने की आवश्यकता है। पाइपलाइन के साथ अपवादों और विफलता मामलों को संभालने का निर्णय लेने पर चीजें बालों वाली होती हैं।
एक और अधिक सूक्ष्म अंतर कैसे प्रगणक पाइप लाइन के द्वारा दिया गया मान संभाला और गणना की जाती है हो रहा है।
इन मतभेदों और संभावित विसंगतियों का एक बहुत इकाई और पाइपों के लिए श्रेणी कार्यान्वयन के प्रयोग से अवगत कराया गया है और अब मुहैया कराने का साधन में अपना रास्ता बना रहे हैं।
- 1. LinkedHashMaps बनाम LinkedHashSets के पेशेवरों और विपक्ष क्या हैं?
- 2. पेशेवरों और ट्रिगर की विपक्ष बनाम असमान्यीकरण
- 3. स्लिम बनाम Sizzle - सीएसएस चयनकर्ता इंजन के पेशेवरों और विपक्ष
- 4. डेटाकंट्रैक्टसेरियलाइज़र बनाम एक्सएमएलएसरियलाइज़र: प्रत्येक धारावाहिक के पेशेवरों और विपक्ष
- 5. अनुरोध वस्तु, पेशेवरों और विपक्ष क्या हैं?
- 6. विजुअल स्टूडियो 2012 एमएसटीएस्ट बनाम एनयूनीट पेशेवरों और विपक्ष
- 7. गतिशील एसक्यूएल बनाम संग्रहीत प्रक्रियाओं - पेशेवरों और विपक्ष?
- 8. सी # सॉकेट बनाम पाइप्स
- 9. फ्लैश बनाम AJAX/JS के (तकनीकी) पेशेवरों और विपक्ष क्या हैं?
- 10. अन्य मॉकिंग फ्रेमवर्क बनाम rspec mocking के पेशेवरों और विपक्ष क्या हैं?
- 11. डीडब्ल्यूएस स्क्रिप्ट बनाम Remocbjects पास्कलस्क्रिप्ट के पेशेवरों और विपक्ष क्या हैं?
- 12. सौर और लोचदार खोज के पेशेवरों और विपक्ष क्या हैं?
- 13. एमवीसी पेशेवरों और विपक्ष
- 14. हास्केल के पेशेवरों और विपक्ष
- 15. प्रदर्शन (और वर्गीकरण) में पदानुक्रमित डेटा बनाम संबंधित डेटा के पेशेवरों और विपक्ष क्या होंगे?
- 16. पेशेवरों/दस्तावेज़ आधारित डेटाबेस बनाम रिलेशनल डेटाबेस की विपक्ष
- 17. एंकर मॉडलिंग के पेशेवरों और विपक्ष क्या हैं?
- 18. विभिन्न पायथन कार्यान्वयन के पेशेवरों और विपक्ष क्या हैं?
- 19. बाकी बनाम WCF पक्ष-विपक्ष
- 20. कैसल सक्रिय रिकॉर्ड बनाम सीधे NHibernate का उपयोग करने के पेशेवरों और विपक्ष क्या है?
- 21. नया() बनाम newsequentialid() मतभेद/पेशेवर और विपक्ष क्या हैं?
- 22. टिंकर और wxwidgets के पेशेवरों और विपक्ष?
- 23. अन्य नोएसक्यूएल डेटाबेस के संबंध में डायनेमोडबी के पेशेवरों और विपक्ष क्या हैं?
- 24. जावा नियम इंजन के पेशेवरों और विपक्ष
- 25. जावा पोर्टलेट के पेशेवरों और विपक्ष?
- 26. सभी अजाक्स साइट के पेशेवरों और विपक्ष?
- 27. संस्करणिंग के पेशेवरों और विपक्ष javadoc
- 28. MPMoviePlayerController के पेशेवरों और विपक्ष मूवी
- 29. बहु-मूल्य डेटाबेस के पेशेवरों और विपक्ष
- 30. अपाचे टाइल्स फ्रेमवर्क के पेशेवरों और विपक्ष
कंडिटेक्ट्स और पाइप्स अभी भी भारी संशोधन से गुजर रहे हैं, इसलिए जब तक वे व्यवस्थित न हों तब तुलना करना और विपरीत होना मुश्किल है। आदर्श स्थिति में, नशीले पदार्थों और पाइप गणक करने के लिए सही तरीके से विलय करेंगे। –