> module Data.List.Extras (pairs, argmax) where > > import Control.Applicative ((<*>)) > import Data.Function (on) > import Data.List (maximumBy)`pairs` takes a list, and returns a list of consecutive elements pairs:
> pairs :: [a] -> [(a,a)] > pairs = zip <*> tail`argmax` takes a function and a list, and returns the element of the list for which the given function attains its maximum value:
> argmax :: Ord b => (a -> b) -> [a] -> a > argmax = maximumBy . on compare