2010-11-17 18 views
19

मैं Writer की जोड़ी वर्तनी हर समय का उपयोग करें, लेकिन मैं हमेशा खुद का दृष्टांत के लिए है:'मोनाड ((,) डब्ल्यू)' उदाहरण कहीं भी मानक है?

instance (Monoid w) => Monad ((,) w) where 
    return x = (mempty, x) 
    ~(w,x) >>= f = let (w', y) = f x in (w `mappend` w', y) 

इस मानक पुस्तकालयों में कहीं भी रहते है?

+7

अब जब आप इसका जिक्र करते हैं, तो यह उत्सुक है कि 'Control.Monad.Instances' में' ((,) ए) के लिए 'फ़ंक्शन' उदाहरण शामिल है, लेकिन 'अज्ञात' उदाहरण नहीं है, अज्ञात पाठक होने के बावजूद ' (->) ई) 'और अनाम त्रुटि 'या तो ई'। –

+0

यह भी देखें http://stackoverflow.com/questions/4211150/why-isnt-implemented-with-control-monad-instances-by-default –

+0

@McCann: आप '((,) ए के लिए मोनाड इंस्टेंस कैसे कार्यान्वित करते हैं) '? उदाहरण के लिए, मुझे कोई वापसी नहीं है कि 'वापसी' को कैसे कार्यान्वित किया जाए। –

उत्तर

8

टिप्पणी में वर्णित कैमकैन के रूप में, Control.Monad.Instances केवल Functor उदाहरण परिभाषित करता है।

Control.Monad.ApplicativeApplicative उदाहरण परिभाषित करता है।

transformers पैकेज, और इस प्रकार भी संस्करण 2 और mtl पैकेज के ऊपर, एक आवरण समारोह writer :: (a, w) -> Writer w a परिभाषित करते हैं।

लेकिन मुझे कहीं भी Monad उदाहरण नहीं मिला है।

संबंधित मुद्दे