[Haskell-beginners] duplicate monoids...
joel.s.williamson at gmail.com
Tue Oct 20 21:40:21 UTC 2015
A type can only have a single instance of a given class. Imagine if this
weren't true. The compiler would have to guess which of the instances you
meant to use. The solution is to use newtype. That will introduce a
different type, allowing separate instances, but is optimised out so it
carries no runtime cost.
On Tue, 20 Oct 2015, 17:24 Mike Houghton <mike_k_houghton at yahoo.co.uk>
> I’m looking at a blog post on Monoids and finger trees at
> and would appreciate a bit of advice
> I have
> type Size = Int
> type Priority = Int
> instance Monoid Size where
> mempty = 0
> mappend = (+)
> instance Monoid Priority where
> mempty = maxBound
> mappend = min
> and I get compiler error
> Duplicate instance declarations:
> instance Monoid Size
> -- Defined at /Users/mike/haskell/FingerTrees/Ftree.hs:60:10
> instance Monoid Priority
> -- Defined at /Users/mike/haskell/FingerTrees/Ftree.hs:64:10
> Which I can sort of understand as Size and Priority are both Int but on
> the other hand, internally, the monoids are different.
> Is this genuinely incorrect code or is there a language extension to get
> around this?
> Beginners mailing list
> Beginners at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Beginners