Proposal: Implement minimumOn, maximumOn to mirror sortOn

Andrew Martin andrew.thaddeus at gmail.com
Tue Oct 30 12:13:53 UTC 2018


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.

On Mon, Oct 29, 2018 at 8:09 PM Eric Mertens <emertens at gmail.com> wrote:

> 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.
>
> On the other hand, we have the definitions:
>
> minimumOn = minimumBy . comparing
> maximumOn = maximumBy . comparing
>
> 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`.
>
> 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.
>
> minimumOn :: (Foldable t, Ord b) => (a -> b) -> t a -> Maybe a
>
> I’m not sure why it makes sense to force ourselves into returning an
> imprecise exception in the empty list case.
>
> Best regards,
> Eric Mertens
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>


-- 
-Andrew Thaddeus Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20181030/f15e8f4b/attachment.html>


More information about the Libraries mailing list