list-tries-0.6.1: Tries and Patricia tries: finite sets and maps for list keys

Safe HaskellSafe-Inferred
LanguageHaskell98

Data.ListTrie.Base.Map

Synopsis

Documentation

class Foldable (m k) => Map m k where Source

Minimal complete implementation:

For decent performance, supplying at least mapAccumWithKey and filter as well is probably a good idea.

Methods

eqCmp :: m k a -> k -> k -> Bool Source

Like an Eq instance over k, but should compare on the same type as m does. In most cases this can be defined just as const (==).

empty :: m k a Source

singleton :: k -> a -> m k a Source

doubleton :: k -> a -> k -> a -> m k a Source

Precondition: the two keys differ

null :: m k a -> Bool Source

lookup :: k -> m k a -> Maybe a Source

insertWith :: (a -> a -> a) -> k -> a -> m k a -> m k a Source

Strictness can be whatever is more optimal for the map type, shouldn't matter

insert :: k -> a -> m k a -> m k a Source

update :: (a -> Maybe a) -> k -> m k a -> m k a Source

adjust :: (a -> a) -> k -> m k a -> m k a Source

delete :: k -> m k a -> m k a Source

alter :: (Maybe a -> Maybe a) -> k -> m k a -> m k a Source

unionWith :: (a -> a -> a) -> m k a -> m k a -> m k a Source

differenceWith :: (a -> b -> Maybe a) -> m k a -> m k b -> m k a Source

intersectionWith :: (a -> b -> c) -> m k a -> m k b -> m k c Source

unionWithKey :: (k -> a -> a -> a) -> m k a -> m k a -> m k a Source

differenceWithKey :: (k -> a -> b -> Maybe a) -> m k a -> m k b -> m k a Source

intersectionWithKey :: (k -> a -> b -> c) -> m k a -> m k b -> m k c Source

map :: (a -> b) -> m k a -> m k b Source

mapWithKey :: (k -> a -> b) -> m k a -> m k b Source

mapAccum :: (a -> b -> (a, c)) -> a -> m k b -> (a, m k c) Source

mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c) Source

filter :: (a -> Bool) -> m k a -> m k a Source

toListKV :: m k a -> [(k, a)] Source

fromListKV :: [(k, a)] -> m k a Source

fromListKVWith :: (a -> a -> a) -> [(k, a)] -> m k a Source

serializeToList :: m k a -> [(k, a)] Source

deserializeFromList :: [(k, a)] -> m k a Source

isSubmapOfBy :: (a -> b -> Bool) -> m k a -> m k b -> Bool Source

singletonView :: m k a -> Maybe (k, a) Source

Instances

Ord k => Map Map k 
Enum k => Map WrappedIntMap k 
Eq k => Map AList k 

class Map m k => OrdMap m k where Source

Minimal complete definition:

For decent performance, supplying at least the following is probably a good idea:

Minimal complete definition

ordCmp, splitLookup

Methods

ordCmp :: m k a -> k -> k -> Ordering Source

Like an Ord instance over k, but should compare on the same type as m does. In most cases this can be defined just as const compare.

toAscList :: m k a -> [(k, a)] Source

toDescList :: m k a -> [(k, a)] Source

splitLookup :: k -> m k a -> (m k a, Maybe a, m k a) Source

split :: k -> m k a -> (m k a, m k a) Source

minViewWithKey :: m k a -> (Maybe (k, a), m k a) Source

maxViewWithKey :: m k a -> (Maybe (k, a), m k a) Source

findPredecessor :: k -> m k a -> Maybe (k, a) Source

findSuccessor :: k -> m k a -> Maybe (k, a) Source

mapAccumAsc :: (a -> b -> (a, c)) -> a -> m k b -> (a, m k c) Source

mapAccumAscWithKey :: (a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c) Source

mapAccumDesc :: (a -> b -> (a, c)) -> a -> m k b -> (a, m k c) Source

mapAccumDescWithKey :: (a -> k -> b -> (a, c)) -> a -> m k b -> (a, m k c) Source

Instances

Ord k => OrdMap Map k 
Enum k => OrdMap WrappedIntMap k 
Ord k => OrdMap AList k 

data AList k v Source

Instances

Ord k => OrdMap AList k 
Eq k => Map AList k 
Functor (AList k) 
Foldable (AList k) 
Traversable (AList k) 
(Eq k, Eq v) => Eq (AList k v) 
(Ord k, Ord v) => Ord (AList k v)