<div dir="ltr">I am -1 on this. These functions are built on top of foldl1. Consequently, they are partial functions. The constraint on these is rightfully Foldable1 (possibly to be renamed to Semifoldable), which may one day reside in base. Although we cannot go back in time and prevent the proliferation of partial functions in base, we can avoid introducing more of them.</div><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 29, 2018 at 8:09 PM Eric Mertens <<a href="mailto:emertens@gmail.com">emertens@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">Having the consistency with `sortOn` seems like a win, but the reason we have `sortOn` is that the implementation is not completely trivial. It has to be ever so slightly smart to reuse the projections when sorting.</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">On the other hand, we have the definitions:</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">minimumOn = minimumBy . comparing</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">maximumOn = maximumBy . comparing</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">It’s not obvious to me that this needs its own name instead of simply mentioning that `comparing` exists in the haddock documentation for `minimumBy` and `maximumBy`.</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">Is it a foregone conclusion that we should maintain consistency with `minimum` and `maximum` on their result types? I consider these types mistakes and would have preferred to see `Maybe` involved.</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">minimumOn :: (Foldable t, Ord b) => (a -> b) -> t a -> Maybe a</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">I’m not sure why it makes sense to force ourselves into returning an imprecise exception in the empty list case.</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">Best regards,</span><br style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px">Eric Mertens</span><br></div>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">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-bin/mailman/listinfo/libraries</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">-Andrew Thaddeus Martin</div>