<p dir="ltr">Wild guessing: This seems fairly likely to relate somehow to the potential space leak in certain "optimized" compilations of partition (where the GC can't see and reduce selector application). Your Foldable version may benefit in some cases by not being inlined and therefore not getting the problematic optimization. I don't really know for sure. What is clear is that the GC trick isn't as reliable as one might hope, given its performance.</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Oct 20, 2016 3:41 PM, "<a href="mailto:evan@evan-borden.com">evan@evan-borden.com</a>" <<a href="mailto:evan@evanrutledgeborden.dreamhosters.com">evan@evanrutledgeborden.dreamhosters.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>I'm not sure I propose adding it to base either :)<br><br></div>Relaxing `t` as the output is certainly correct. I'm not sure if there is a correct choice between Alternative or Monoid. That would be an indicator that a generic function of this form is arbitrarily opinionated.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 20, 2016 at 3:18 PM, Henning Thielemann <span dir="ltr"><<a href="mailto:lemming@henning-thielemann.de" target="_blank">lemming@henning-thielemann.de</a><wbr>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
On Thu, 20 Oct 2016, <a href="mailto:evan@evan-borden.com" target="_blank">evan@evan-borden.com</a> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I've given the performance hypothesis a test and it seems that a generic implementation outperforms the list<br>
implementation. I'm not terribly sure why this is the case, but I also haven't dumped core.<br>
<br>
Implementation and bench: <a href="https://github.com/eborden/partition" rel="noreferrer" target="_blank">https://github.com/eborden/par<wbr>tition</a><br>
</blockquote>
<br></span>
I do not propose to add this to 'base', but if you are after a generic implementation why is the input container type the same as the output type (both 't')? Why not using Alternative.<|> instead of Monoid.<> ?<br>
</blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/libraries</a><br>
<br></blockquote></div></div>