
Ben Millwood wrote:
I can't answer your question (about getting minBy into the libraries) but I thought I'd point out some tricks:
On Sat, Feb 20, 2010 at 10:47 AM, Andrew Coppin
wrote: Also, constructions like
sortBy (compare `on` foo)
must surely be very common.
Common enough that Data.Ord introduces comparing:
comparing :: (Ord a) => (b -> a) -> b -> b -> Ordering comparing = (compare `on`)
Heh. I didn't even notice that Data.Ord existed...
But it would still be useful to have sortOn et al to capture the common technique when your sorting property is potentially expensive (sortOn length, for example):
sortOn f = map fst . sortBy (comparing snd) . map (\x -> (x, f x))
a technique which I believe is called a Schwarzian transform.
Yes, that looks quite useful...
swap_ord (compare x y) = compare y x, so usually flip compare fills this requirement :)
*facepalm* Damnit, why didn't *I* think of that??