ListSetOps

ghc-8.4.4: The GHC API

Safe Haskell | None
Language | Haskell2010

ListSetOps

Synopsis

- unionLists :: (Outputable a, Eq a) => [a] -> [a] -> [a]
- minusList :: Ord a => [a] -> [a] -> [a]
- type Assoc a b = [(a, b)]
- assoc :: Eq a => String -> Assoc a b -> a -> b
- assocMaybe :: Eq a => Assoc a b -> a -> Maybe b
- assocUsing :: (a -> a -> Bool) -> String -> Assoc a b -> a -> b
- assocDefault :: Eq a => b -> Assoc a b -> a -> b
- assocDefaultUsing :: (a -> a -> Bool) -> b -> Assoc a b -> a -> b
- hasNoDups :: Eq a => [a] -> Bool
- removeDups :: (a -> a -> Ordering) -> [a] -> ([a], [NonEmpty a])
- findDupsEq :: (a -> a -> Bool) -> [a] -> [NonEmpty a]
- equivClasses :: (a -> a -> Ordering) -> [a] -> [NonEmpty a]
- getNth :: Outputable a => [a] -> Int -> a

# Documentation

unionLists :: (Outputable a, Eq a) => [a] -> [a] -> [a] #

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

Calculate the set difference of two lists. This is O((m + n) log n), where we subtract a list of n elements from a list of m elements.

Extremely short cases are handled specially: When m or n is 0, this takes O(1) time. When m is 1, it takes O(n) time.

type Assoc a b = [(a, b)] #

assoc :: Eq a => String -> Assoc a b -> a -> b #

assocMaybe :: Eq a => Assoc a b -> a -> Maybe b #

assocUsing :: (a -> a -> Bool) -> String -> Assoc a b -> a -> b #

assocDefault :: Eq a => b -> Assoc a b -> a -> b #

assocDefaultUsing :: (a -> a -> Bool) -> b -> Assoc a b -> a -> b #

hasNoDups :: Eq a => [a] -> Bool #

removeDups :: (a -> a -> Ordering) -> [a] -> ([a], [NonEmpty a]) #

findDupsEq :: (a -> a -> Bool) -> [a] -> [NonEmpty a] #

equivClasses :: (a -> a -> Ordering) -> [a] -> [NonEmpty a] #

getNth :: Outputable a => [a] -> Int -> a #