[Haskell-beginners] duplicate monoids...
Joel Williamson
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>
wrote:
> Hi,
>
> I’m looking at a blog post on Monoids and finger trees at
> http://apfelmus.nfshost.com/articles/monoid-fingertree.html
> 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?
>
> Thanks
>
> Mike
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151020/b491799e/attachment.html>
More information about the Beginners
mailing list