<div dir="auto"><div>I think this is the right way to go: undefined when the maximum is duplicated. It is not implausible, for instance, that someone's mental model or even an alternate implementation of this function would, say, use the quicksort-like binary search for the maximum, and that really could give any of the options because quicksort is not stable.<div dir="auto"><br></div><div dir="auto">There is no right answer to this question and therefore no answer should be demanded unless there is a compelling reason of efficiency.</div><div dir="auto"><br></div><div dir="auto">Definitely document this, though.</div><br><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 28, 2018, 07:27 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">Hello,<br>
<br>
My opinion on this issue is that code should not be relying on the ordering of the choice made by maximumBy or minimumBy.<br>
<br>
If we changed something I’d prefer to document that it is undefined what element is chosen when two are considered equal by the comparison function.<br>
<br>
Code that relies on a particular earlier or later bias should use a function that makes it clear in the name that that’s what it’s doing. Readers should not be required to memorize the behavior of minimumBy or maximumBy in this regard to understand the code they are reading.<br>
<br>
Best regards,<br>
Eric<br>
<br>
> On Dec 28, 2018, at 7:18 AM, Johannes Waldmann <<a href="mailto:johannes.waldmann@htwk-leipzig.de" target="_blank" rel="noreferrer">johannes.waldmann@htwk-leipzig.de</a>> wrote:<br>
> <br>
> Dear all,<br>
> <br>
> this was brought up on the GHC tracker (not by me)<br>
> <br>
> <a href="https://ghc.haskell.org/trac/ghc/ticket/15921" rel="noreferrer noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/15921</a><br>
> <br>
> and it was suggested for discussion here.<br>
> <br>
> my summary: Data.List.maximumBy is right-biased,<br>
> minimumBy is left-biased, and none of this is documented.<br>
> <br>
> - J.W.<br>
> <br>
> _______________________________________________<br>
> Libraries mailing list<br>
> <a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank" rel="noreferrer">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries</a><br>
</blockquote></div></div></div>