Copyright | (c) Gershom Bazerman 2018 |
---|---|

License | BSD-style |

Maintainer | libraries@haskell.org |

Portability | portable |

Safe Haskell | Trustworthy |

Language | Haskell98 |

This module provides efficient containers-based functions on the list type.

# Documentation

nubOrd :: Ord a => [a] -> [a] Source #

\( O(n \log n \). The `nubOrd`

function removes duplicate elements from a list.
In particular, it keeps only the first occurrence of each element. By using a
`Set`

internally it has better asymptotics than the standard `nub`

function.

#### Strictness

`nubOrd`

is strict in the elements of the list.

#### Efficiency note

When applicable, it is almost always better to use `nubInt`

or `nubIntOn`

instead
of this function. For example, the best way to nub a list of characters is

nubIntOn fromEnum xs

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

The `nubOrdOn`

function behaves just like `nubOrd`

except it performs
comparisons not on the original datatype, but a user-specified projection
from that datatype.

#### Strictness

`nubOrdOn`

is strict in the values of the function applied to the
elements of the list.

nubInt :: [Int] -> [Int] Source #

\( O(n \min(n,W)) \). The `nubInt`

function removes duplicate `Int`

values from a list. In particular, it keeps only the first occurrence
of each element. By using an `IntSet`

internally, it attains better
asymptotics than the standard `nub`

function.

See also `nubIntOn`

, a more widely applicable generalization.

#### Strictness

`nubInt`

is strict in the elements of the list.