On Fri, Mar 23, 2012 at 4:21 PM, Nate Soares <span dir="ltr">&lt;<a href="mailto:nate@so8r.es">nate@so8r.es</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Note that this might be a good time to consider re-factoring the list operations, for example, making ++ operate on monoids instead of just lists. </blockquote><div><br></div><div><div>Note: we have (&lt;&gt;) for Monoid, which was deliberately chosen rather than generalizing (++) because that had already changed meaning from applying to MonadPlus to the more restricted type during what I tend to refer to as the &quot;great momomorphization revolution of 1998&quot;, and not every MonadPlus is compatible with the corresponding monoid (Maybe comes to mind).</div>
<div><br></div><div>This also entails moving Data.Monoid into the standard.</div></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think the &#39;naming issue&#39; that you mention highlights the need for better use of type classes in the prelude.</blockquote>
<div><br></div><div>The major issue with typeclasses for things like special-purpose containers is that they almost inevitably wind up requiring multiparameter type classes with functional dependencies, or they need type families. This then runs afoul of the fact that since neither one is better than the other for all usecases, neither one seems to be drifting any closer to standardization.</div>
<div><br></div><div>-Edward</div></div>