maximumBy +base

maximumBy :: (a -> a -> Ordering) -> [a] -> a
base Data.List
The maximumBy function takes a comparison function and a list and returns the greatest element of the list by the comparison function. The list must be finite and non-empty.
maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
base Data.Foldable
The largest element of a non-empty structure with respect to the given comparison function.