Copyright | (c) Volodymyr Yashchenko |
---|---|

License | BSD3 |

Maintainer | ualinuxcn@gmail.com |

Stability | Unstable |

Portability | portable |

Safe Haskell | Safe |

Language | Haskell2010 |

Library provides functions to find unique and duplicate elements in the list. Unlike Data.List.Unique this one uses Data.Map.Strict for calculations. So it's much faster and it uses less memory.

- sortUniq :: Ord a => [a] -> [a]
- isUnique :: Ord a => a -> [a] -> Maybe Bool
- isRepeated :: Ord a => a -> [a] -> Maybe Bool
- repeated :: Ord a => [a] -> [a]
- repeatedBy :: Ord a => (Int -> Bool) -> [a] -> [a]
- unique :: Ord a => [a] -> [a]
- allUnique :: Ord a => [a] -> Bool
- count :: Ord a => [a] -> [(a, Int)]
- count_ :: Ord a => [a] -> [(a, Int)]

# Documentation

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

`sortUniq`

sorts the list and removes the duplicates of elements. Example:

sortUniq "foo bar" == " abfor"

isUnique :: Ord a => a -> [a] -> Maybe Bool Source #

`isUnique`

function is to check whether the given element is unique in the list or not.

It returns Nothing when the element does not present in the list. Examples:

isUnique 'f' "foo bar" == Just True isUnique 'o' "foo bar" == Just False isUnique '!' "foo bar" == Nothing

Since 0.4.7.2

isRepeated :: Ord a => a -> [a] -> Maybe Bool Source #

`isRepeated`

is a reverse function to `isUnique`

Since 0.4.5

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

`repeated`

finds only the elements that are present more than once in the list. Example:

repeated "foo bar" == "o"

repeatedBy :: Ord a => (Int -> Bool) -> [a] -> [a] Source #

The `repeatedBy`

function behaves just like repeated, except it uses a user-supplied equality predicate.

repeatedBy (>2) "This is the test line" == " eist"

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

`unique`

gets only unique elements, that do not have duplicates.
It sorts them. Example:

unique "foo bar" == " abfr"

allUnique :: Ord a => [a] -> Bool Source #

`allUnique`

checks whether all elements of the list are unique

allUnique "foo bar" == False allUnique ['a'..'z'] == True allUnique [] == True (!)

Since 0.4.7.2