2013-01-05 32 views
9

Monad वर्ग एक >> विधि है, जो दो monadic कार्रवाई अनुक्रम को परिभाषित करता है:हास्केल मानक पुस्तकालय में कोई << क्यों नहीं है?

>> :: Monad m => m a -> m b -> m b 

बाध्यकारी ऑपरेटर >>= है एक फ़्लिप तर्क बराबर, =<<; जैसा कि मोनैडिक फ़ंक्शन कंपोज़िशन ('मछली') ऑपरेटर >=> और <=< करते हैं। << प्रतीत नहीं होता है, हालांकि (हुगलिंग के कुछ मिनटों के बाद)। ऐसा क्यों है?

संपादित करें: मैं जानता हूँ कि यह एक बड़ी बात नहीं है। मुझे बस कोड की कुछ पंक्तियां बाएं-पॉइंटिंग ऑपरेटरों के साथ दिखती हैं। x <- doSomething =<< doSomethingElse सिर्फ x <- doSomethingElse >>= doSomething की तुलना में तीरों के साथ, ठीक उसी तरह से दिखता है, ठीक है।

+0

किसी ने इसके लिए कोई मामला नहीं बनाया है। –

+0

उन्होंने इस बारे में तब नहीं सोचा जब उन्होंने '= <<' और '<= <' बनाया? मुझे पता नहीं है कि यह मुझे परेशान क्यों कर रहा है, यह सिर्फ एक निरीक्षण की तरह लगता है। –

+0

उह, क्या वे दोनों उदाहरण एक ही काम करते हैं? – MathematicalOrchid

उत्तर

10

मेरी जानकारी के अनुसार करने के लिए कोई अच्छा कारण नहीं है। ध्यान दें, कि अपने Monad भी Applicative का एक उदाहरण होना चाहिए, ताकि आप <* और *> बजाय अपने अनुक्रमण उपकरण के रूप में उपयोग कर सकते हैं।

+0

अच्छा विचार! धन्यवाद। –

+10

लेकिन ध्यान दें कि हालांकि '*>' '' 'के बराबर है,' a <* b' 'b *> a' के बराबर नहीं है। – dave4420

+0

@ डेव 4420 यह एक अच्छा बिंदु है। 'फ्लिप (*>)' और 'फ्लिप (>>) 'हमेशा एक विकल्प हैं। –

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