Hi all,
I'm proposing that the implementations of minimumBy and maximumBy be changed from using foldl1 to foldr1.
I found this in a GHC trac ticket[0] labelled 'Newcomer' that has more details / discussion on that.
The points that stand out to me are:
- the Haskell report says that those methods should be implemented in terms of foldl1 (although as instance methods of Foldable there might be some wiggle room there)
- it helps solves a space leak (which at first glance feels like it might be a more common problem than the options that foldl1 removes)
- from the discussion on the ticket, it seemed to be an agreeable middle ground
As a side note: there have been a few proposals in the past to switch these functions to use foldl', which seemed to have stalled. I don't know what the etiquette is around bringing up minor variations on old proposals again, so I apologise if I've breached some kind of protocol here.
Although I guess I've already breached one protocol by pushing a patch to Phabricator for review without getting sign-off from the Core Libraries Committee, so at least I'm being even handed with my clumsiness :)
Cheers,
Dave