2012-09-05 7 views
6

पर 'बीजगणित' पैकेज से कम्यूटिव मोनोइड algebra/2.1.1.2/doc/html के लिए प्रलेखन एक विशाल संख्या में प्रकार के वर्ग दिखाता है।हैकेज

मैं कैसे घोषित है कि प्रश्न में एक संरचना है विनिमेय साहचर्य संचालन और एक इकाई/पहचान तत्व के साथ सुसज्जित किया जाना चाहिए, लेकिन कुछ और बिना (प्रतिलोम, distributivity आदि)?

मैं

reduce :: Monoid m => (a -> m) -> [a] -> m 

के बारे में सोच रहा हूँ, लेकिन Data.Monoid के उदाहरण विनिमेय होना चाहिए नहीं कर रहे हैं और मैं अपने समारोह के उपयोगकर्ताओं को देखने के लिए कि वे समारोह के लिए commutativity जरूरत को देखकर काम करना चाहते हैं प्रकार।

उत्तर

8

(Abelian m, Monoidal m)

यह ऐसा लगता है कि Monoidal आपकी अपेक्षा से कहीं अधिक है, लेकिन यह Natural पर Semiring पर आधारित है।

+1

यह सही उत्तर है। –

1

ऐसा लगता है कि है कि पैकेज, एक विनिमेय वर्ग प्रदान करता है तो मेरे को सही अगर मैं गलत हूँ, लेकिन ऐसा लगता है कि यह एक दूसरे typeclass निर्दिष्ट करने का मामला है जैसे:

reduce :: (Monoid m, Commutative m) => (a -> m) -> [a] -> m 
+0

'गुणक' वर्ग की कार्रवाई के बारे में 'कम्यूटिव' वार्ता, 'मोनॉयड' नहीं। आप '(*)' और 'एक', या' (एबेलियन एम, मोनोइडल एम) 'के साथ काम करने वाले एक बहुविकल्पीय कम्यूटिव मोनोइड प्राप्त करने के लिए '(कम्यूटेटिव एम, यूनिटाइल एम)' का उपयोग कर सकते हैं, जो एक कम्यूटिव मोनोइड प्राप्त करने के लिए' (+) 'और' शून्य'। –

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