sort-1.0.0.0: A Haskell sorting toolkit

Safe HaskellSafe
LanguageHaskell2010

Data.Sort

Contents

Synopsis

The Vanilla Sorts

sort :: Ord a => [a] -> [a] #

The sort function implements a stable sorting algorithm. It is a special case of sortBy, which allows the programmer to supply their own comparison function.

Elements are arranged from from lowest to highest, keeping duplicates in the order they appeared in the input.

sortBy :: (a -> a -> Ordering) -> [a] -> [a] #

The sortBy function is the non-overloaded version of sort.

sortOn :: Ord b => (a -> b) -> [a] -> [a] #

Sort a list by comparing the results of a key function applied to each element. sortOn f is equivalent to sortBy (comparing f), but has the performance advantage of only evaluating f once for each element in the input list. This is called the decorate-sort-undecorate paradigm, or Schwartzian transform.

Elements are arranged from from lowest to highest, keeping duplicates in the order they appeared in the input.

Since: 4.8.0.0

Sorting Associations

monoidSortAssocs :: (Monoid a, Ord k) => [(k, a)] -> [(k, a)] #

Sort the list of associations, aggregating duplicates with the monoid.

monoidSortAssocsBy :: Monoid a => (k -> k -> Ordering) -> [(k, a)] -> [(k, a)] #

Sort the list of associations, aggregating duplicates with the monoid and ordering the keys with the argument compare function.

groupSortAssocs :: Ord k => (k -> a -> [a] -> b) -> [(k, a)] -> [(k, b)] #

Sort the list of associations, aggregating duplicates with the supplied function.

groupSortAssocsBy :: (k -> k -> Ordering) -> (k -> a -> [a] -> b) -> [(k, a)] -> [(k, b)] #

Sort the list of associations, aggregating duplicates with the supplied function and ordering the keys with the argument compare function.

Sorting with Monoids

monoidSort :: (Monoid a, Ord a) => [a] -> [a] #

Sort the list, agregating duplicates with the monoid.

monoidSortOn :: (Monoid a, Ord k) => (a -> k) -> [a] -> [a] #

Sort the list, agregating duplicates with the monoid and ordering the elements by the items generated by the argument function.

monoidSortBy :: Monoid a => (a -> a -> Ordering) -> [a] -> [a] #

Sort the list, agregating duplicates with the monoid and ordering the keys with the argument compare function.

Unique Sorts

uniqueSort :: Ord a => [a] -> [a] #

Sort the list, discarding duplicates.

uniqueSortOn :: Ord k => (a -> k) -> [a] -> [a] #

Sort the list, discarding duplicates and ordering the elements by the items generated by the argument function.

uniqueSortBy :: (a -> a -> Ordering) -> [a] -> [a] #

Sort the list, discarding duplicates and ordering the keys with the argument compare function.

Group Sorting

groupSort :: Ord a => (a -> [a] -> b) -> [a] -> [b] #

Sort a list of elements with a stable sort, grouping together the equal elements with the argument grouping function

groupSortOn :: Ord k => (a -> k) -> (k -> a -> [a] -> b) -> [a] -> [b] #

Sort a list of elements with a stable sort, using the argument compare function determine the ordering, grouping together the equal elements with the grouping function

groupSortBy :: (a -> a -> Ordering) -> (a -> [a] -> b) -> [a] -> [b] #

Sort a list of elements with a stable sort, grouping together the equal elements with the argument grouping function.