Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Mini.Data.Set
Description
A structure containing unique elements
Synopsis
- data Set a
- set :: b -> (Set a -> a -> Set a -> b -> b -> b) -> Set a -> b
- empty :: Set a
- singleton :: a -> Set a
- fromList :: Ord a => [a] -> Set a
- fromAscList :: Eq a => [a] -> Set a
- fromDescList :: Eq a => [a] -> Set a
- fromDistinctAscList :: [a] -> Set a
- fromDistinctDescList :: [a] -> Set a
- difference :: Ord a => Set a -> Set a -> Set a
- intersection :: Ord a => Set a -> Set a -> Set a
- union :: Ord a => Set a -> Set a -> Set a
- unions :: (Foldable t, Ord a) => t (Set a) -> Set a
- toAscList :: Set a -> [a]
- toDescList :: Set a -> [a]
- delete :: Ord a => a -> Set a -> Set a
- deleteMax :: Ord a => Set a -> Set a
- deleteMin :: Ord a => Set a -> Set a
- filter :: (a -> Bool) -> Set a -> Set a
- insert :: Ord a => a -> Set a -> Set a
- partition :: (a -> Bool) -> Set a -> (Set a, Set a)
- split :: Ord a => a -> Set a -> (Set a, Bool, Set a)
- splitMax :: Ord a => Set a -> Maybe (a, Set a)
- splitMin :: Ord a => Set a -> Maybe (a, Set a)
- disjoint :: Ord a => Set a -> Set a -> Bool
- isSubsetOf :: Ord a => Set a -> Set a -> Bool
- lookupGE :: Ord a => a -> Set a -> Maybe a
- lookupGT :: Ord a => a -> Set a -> Maybe a
- lookupLE :: Ord a => a -> Set a -> Maybe a
- lookupLT :: Ord a => a -> Set a -> Maybe a
- lookupMax :: Set a -> Maybe a
- lookupMin :: Set a -> Maybe a
- member :: Ord a => a -> Set a -> Bool
- null :: Set a -> Bool
- size :: Set a -> Int
- valid :: Ord a => Set a -> Bool
Type
A set containing elements of type a, internally structured as an AVL tree
Instances
Foldable Set Source # | |
Defined in Mini.Data.Set Methods fold :: Monoid m => Set m -> m # foldMap :: Monoid m => (a -> m) -> Set a -> m # foldMap' :: Monoid m => (a -> m) -> Set a -> m # foldr :: (a -> b -> b) -> b -> Set a -> b # foldr' :: (a -> b -> b) -> b -> Set a -> b # foldl :: (b -> a -> b) -> b -> Set a -> b # foldl' :: (b -> a -> b) -> b -> Set a -> b # foldr1 :: (a -> a -> a) -> Set a -> a # foldl1 :: (a -> a -> a) -> Set a -> a # elem :: Eq a => a -> Set a -> Bool # maximum :: Ord a => Set a -> a # | |
Ord a => Monoid (Set a) Source # | |
Ord a => Semigroup (Set a) Source # | |
Show a => Show (Set a) Source # | |
Eq a => Eq (Set a) Source # | |
Ord a => Ord (Set a) Source # | |
Primitive Recursion
Arguments
:: b | Value yielded in case of empty node |
-> (Set a -> a -> Set a -> b -> b -> b) | Function applied in case of non-empty node: left child, element, right child, left recursion, right recursion (elements are lesser to the left, greater to the right) |
-> Set a | Object of the case analysis |
-> b |
Primitive recursion on sets (internally structured as trees)
Construction
fromAscList :: Eq a => [a] -> Set a Source #
O(n) Make a set from a sorted list of elements
fromDescList :: Eq a => [a] -> Set a Source #
O(n) Make a set from a sorted list of elements
fromDistinctAscList :: [a] -> Set a Source #
O(n) Make a set from a sorted list of distinct elements
fromDistinctDescList :: [a] -> Set a Source #
O(n) Make a set from a sorted list of distinct elements
Combination
Conversion
toDescList :: Set a -> [a] Source #
O(n) Turn a set into a list of elements in descending order
Modification
Partition
partition :: (a -> Bool) -> Set a -> (Set a, Set a) Source #
O(n) Partition a set with a predicate into (true, false)
subsets
split :: Ord a => a -> Set a -> (Set a, Bool, Set a) Source #
O(n) Split a set by an element into (lt, eq, gt)
subsets
Query
disjoint :: Ord a => Set a -> Set a -> Bool Source #
O(m log n) Check whether two sets have no elements in common
isSubsetOf :: Ord a => Set a -> Set a -> Bool Source #
O(n log m) Check whether the elements of a set exist in the other
lookupGE :: Ord a => a -> Set a -> Maybe a Source #
O(log n) Fetch the least element greater than or equal to the given one
lookupGT :: Ord a => a -> Set a -> Maybe a Source #
O(log n) Fetch the least element strictly greater than the given one
lookupLE :: Ord a => a -> Set a -> Maybe a Source #
O(log n) Fetch the greatest element less than or equal to the given one
lookupLT :: Ord a => a -> Set a -> Maybe a Source #
O(log n) Fetch the greatest element strictly less than the given one
lookupMax :: Set a -> Maybe a Source #
O(log n) Fetch the maximum element, or Nothing
if the set is empty
lookupMin :: Set a -> Maybe a Source #
O(log n) Fetch the minimum element, or Nothing
if the set is empty