| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Containers
Description
Warning: This module should be considered highly experimental.
- class (Monoid set, Semigroup set, MonoFoldable set, Eq (ContainerKey set), GrowingAppend set) => SetContainer set where
- type ContainerKey set
- class PolyMap map where
- class BiPolyMap map where
- type BPMKeyConstraint map key :: Constraint
- class (MonoTraversable map, SetContainer map) => IsMap map where
- type MapValue map
- class (SetContainer set, Element set ~ ContainerKey set) => IsSet set where
- class MonoFunctor mono => MonoZip mono where
- class SetContainer set => HasKeysSet set where
- type KeySet set
Documentation
class (Monoid set, Semigroup set, MonoFoldable set, Eq (ContainerKey set), GrowingAppend set) => SetContainer set where #
A container whose values are stored in Key-Value pairs.
Minimal complete definition
Methods
member :: ContainerKey set -> set -> Bool #
Check if there is a value with the supplied key in the container.
notMember :: ContainerKey set -> set -> Bool #
Check if there isn't a value with the supplied key in the container.
Get the union of two containers.
unions :: (MonoFoldable mono, Element mono ~ set) => mono -> set #
Combine a collection of SetContainers, with left-most values overriding
when there are matching keys.
Since: 1.0.0
difference :: set -> set -> set #
Get the difference of two containers.
intersection :: set -> set -> set #
Get the intersection of two containers.
keys :: set -> [ContainerKey set] #
Get a list of all of the keys in the container.
Instances
| SetContainer IntSet # | |
| Eq key => SetContainer [(key, value)] # | |
| SetContainer (IntMap value) # | This instance uses the functions from Data.IntMap.Strict. |
| Ord element => SetContainer (Set element) # | |
| (Eq element, Hashable element) => SetContainer (HashSet element) # | |
| Ord k => SetContainer (Map k v) # | This instance uses the functions from Data.Map.Strict. |
| (Eq key, Hashable key) => SetContainer (HashMap key value) # | This instance uses the functions from Data.HashMap.Strict. |
A guaranteed-polymorphic Map, which allows for more polymorphic versions
of functions.
Minimal complete definition
Methods
differenceMap :: map value1 -> map value2 -> map value1 #
Get the difference between two maps, using the left map's values.
intersectionMap :: map value1 -> map value2 -> map value1 #
Get the intersection of two maps, using the left map's values.
intersectionWithMap :: (value1 -> value2 -> value3) -> map value1 -> map value2 -> map value3 #
Get the intersection of two maps with a supplied function that takes in the left map's value and the right map's value.
Instances
| PolyMap IntMap # | This instance uses the functions from Data.IntMap.Strict. |
| Ord key => PolyMap (Map key) # | This instance uses the functions from Data.Map.Strict. |
| (Eq key, Hashable key) => PolyMap (HashMap key) # | This instance uses the functions from Data.HashMap.Strict. |
A Map type polymorphic in both its key and value.
Minimal complete definition
Associated Types
type BPMKeyConstraint map key :: Constraint #
Methods
mapKeysWith :: (BPMKeyConstraint map k1, BPMKeyConstraint map k2) => (v -> v -> v) -> (k1 -> k2) -> map k1 v -> map k2 v #
class (MonoTraversable map, SetContainer map) => IsMap map where #
Polymorphic typeclass for interacting with different map types
Minimal complete definition
lookup, insertMap, deleteMap, singletonMap, mapFromList, mapToList
Associated Types
Methods
lookup :: ContainerKey map -> map -> Maybe (MapValue map) #
Look up a value in a map with a specified key.
insertMap :: ContainerKey map -> MapValue map -> map -> map #
Insert a key-value pair into a map.
deleteMap :: ContainerKey map -> map -> map #
Delete a key-value pair of a map using a specified key.
singletonMap :: ContainerKey map -> MapValue map -> map #
Create a map from a single key-value pair.
mapFromList :: [(ContainerKey map, MapValue map)] -> map #
Convert a list of key-value pairs to a map
mapToList :: map -> [(ContainerKey map, MapValue map)] #
Convert a map to a list of key-value pairs.
findWithDefault :: MapValue map -> ContainerKey map -> map -> MapValue map #
Like lookup, but uses a default value when the key does
not exist in the map.
insertWith :: (MapValue map -> MapValue map -> MapValue map) -> ContainerKey map -> MapValue map -> map -> map #
Insert a key-value pair into a map.
Inserts the value directly if the key does not exist in the map. Otherwise, apply a supplied function that accepts the new value and the previous value and insert that result into the map.
insertWithKey :: (ContainerKey map -> MapValue map -> MapValue map -> MapValue map) -> ContainerKey map -> MapValue map -> map -> map #
Insert a key-value pair into a map.
Inserts the value directly if the key does not exist in the map. Otherwise, apply a supplied function that accepts the key, the new value, and the previous value and insert that result into the map.
insertLookupWithKey :: (ContainerKey map -> MapValue map -> MapValue map -> MapValue map) -> ContainerKey map -> MapValue map -> map -> (Maybe (MapValue map), map) #
Insert a key-value pair into a map, return the previous key's value if it existed.
Inserts the value directly if the key does not exist in the map. Otherwise, apply a supplied function that accepts the key, the new value, and the previous value and insert that result into the map.
adjustMap :: (MapValue map -> MapValue map) -> ContainerKey map -> map -> map #
Apply a function to the value of a given key.
Returns the input map when the key-value pair does not exist.
adjustWithKey :: (ContainerKey map -> MapValue map -> MapValue map) -> ContainerKey map -> map -> map #
Equivalent to adjustMap, but the function accepts the key,
as well as the previous value.
updateMap :: (MapValue map -> Maybe (MapValue map)) -> ContainerKey map -> map -> map #
Apply a function to the value of a given key.
If the function returns Nothing, this deletes the key-value pair.
Returns the input map when the key-value pair does not exist.
updateWithKey :: (ContainerKey map -> MapValue map -> Maybe (MapValue map)) -> ContainerKey map -> map -> map #
Equivalent to updateMap, but the function accepts the key,
as well as the previous value.
updateLookupWithKey :: (ContainerKey map -> MapValue map -> Maybe (MapValue map)) -> ContainerKey map -> map -> (Maybe (MapValue map), map) #
Apply a function to the value of a given key.
If the map does not contain the key this returns Nothing
and the input map.
If the map does contain the key but the function returns Nothing,
this returns the previous value and the map with the key-value pair removed.
If the map contains the key and the function returns a value, this returns the new value and the map with the key-value pair with the new value.
alterMap :: (Maybe (MapValue map) -> Maybe (MapValue map)) -> ContainerKey map -> map -> map #
Update/Delete the value of a given key.
Applies a function to previous value of a given key, if it results in Nothing
delete the key-value pair from the map, otherwise replace the previous value
with the new value.
unionWith :: (MapValue map -> MapValue map -> MapValue map) -> map -> map -> map #
Combine two maps.
When a key exists in both maps, apply a function to both of the values and use the result of that as the value of the key in the resulting map.
unionWithKey :: (ContainerKey map -> MapValue map -> MapValue map -> MapValue map) -> map -> map -> map #
unionsWith :: (MapValue map -> MapValue map -> MapValue map) -> [map] -> map #
Combine a list of maps.
When a key exists in two different maps, apply a function to both of the values and use the result of that as the value of the key in the resulting map.
mapWithKey :: (ContainerKey map -> MapValue map -> MapValue map) -> map -> map #
Apply a function over every key-value pair of a map.
omapKeysWith :: (MapValue map -> MapValue map -> MapValue map) -> (ContainerKey map -> ContainerKey map) -> map -> map #
Apply a function over every key of a pair and run
unionsWith over the results.
Instances
| Eq key => IsMap [(key, value)] # | |
| IsMap (IntMap value) # | This instance uses the functions from Data.IntMap.Strict. |
| Ord key => IsMap (Map key value) # | This instance uses the functions from Data.Map.Strict. |
| (Eq key, Hashable key) => IsMap (HashMap key value) # | This instance uses the functions from Data.HashMap.Strict. |
class (SetContainer set, Element set ~ ContainerKey set) => IsSet set where #
Polymorphic typeclass for interacting with different set types
Minimal complete definition
Methods
insertSet :: Element set -> set -> set #
Insert a value into a set.
deleteSet :: Element set -> set -> set #
Delete a value from a set.
singletonSet :: Element set -> set #
Create a set from a single element.
setFromList :: [Element set] -> set #
Convert a list to a set.
setToList :: set -> [Element set] #
Convert a set to a list.
class MonoFunctor mono => MonoZip mono where #
Zip operations on MonoFunctors.
class SetContainer set => HasKeysSet set where #
Type class for maps whose keys can be converted into sets.
Minimal complete definition
Instances
| HasKeysSet (IntMap v) # | |
| Ord k => HasKeysSet (Map k v) # | |
| (Hashable k, Eq k) => HasKeysSet (HashMap k v) # | |