अच्छे दिन के लोगों में बाध्यकारी monads। मैं कृपया monads पर कुछ स्पष्टीकरण मांग रहा हूं और बांध का उपयोग कर रहा हूं (कृपया एक समग्र .
में जाकर)।कंपोजिट्स (हास्केल)
:
--Monadic parts:
readFile :: String -> IO File
putStr :: String -> IO()
-- Non monadic parts
toMatrix :: String -> CustomMatrix
toString :: CustomMatrix -> String
अनिवार्य रूप से मैं lazily एक फ़ाइल (readFile
) तो, एक कस्टम मैट्रिक्स उत्पादन एक स्ट्रिंग उत्पादन के लिए मैट्रिक्स परिवर्तित पढ़ रहा हूँ। फिर लौट रहा है।
fileReading :: String -> IO
fileReading file = putStr(toString . toMatrix . readFile file)
यह वह जगह है जब मैं बाँध >>=
का उपयोग कर readFile file
से जाना द्वारा एक मेस बनाने लगते हैं। क्या कोई तरीका है कि मैं .
कंपोजिट्स का उपयोग करना जारी रख सकता हूं और बिना पढ़े हुए गड़बड़ किए बिना बाध्य और लिख सकता हूं (वास्तव में मेरा उद्देश्य नहीं)।
हमेशा की तरह, किसी भी मदद की आभारी रूप से प्राप्त की जाती है। धन्यवाद दोस्तों
परिवर्तनीय और फ़ंक्शन नाम अंक से शुरू नहीं हो सकते हैं, इसलिए मैं आपके प्रश्न में '2 मैट्रिक्स' और '2 स्ट्रिंग' नाम बदल रहा हूं। – dave4420
क्षमाप्रार्थी। मैं सोचने के बिना अपने फंक्शन नाम कम कर रहा था। – BrownE
कुछ monad 'm' के लिए 'a -> m b' प्रकार के कार्यों के लिए' (।) 'के समानता को' (<= <) '(' Control.Monad' से) कहा जाता है और इसे क्लेस्ली संरचना कहा जाता है। आप जो लिख रहे हैं उसके प्रकारों के आधार पर आप इसे '.' के साथ मिश्रित कर सकते हैं। जैसे 'fileReading = putStr। तार । toMatrix <=
luqui