Copyright | Copyright (c) 1998 2008 Chris Okasaki |
---|---|
License | MIT; see COPYRIGHT file for terms and conditions |
Maintainer | robdockins AT fastmail DOT fm |
Stability | stable |
Portability | GHC, Hugs (MPTC and FD) |
Safe Haskell | None |
Language | Haskell2010 |
Data.Edison.Assoc.AssocList
Contents
Description
This module implements finite maps as simple association lists.
Duplicates are removed conceptually, but not physically. The first occurrence of a given key is the one that is considered to be in the map.
The list type is mildly customized to prevent boxing the pairs.
Synopsis
- data FM k a
- empty :: Eq k => FM k a
- singleton :: Eq k => k -> a -> FM k a
- fromSeq :: (Eq k, Sequence seq) => seq (k, a) -> FM k a
- insert :: Eq k => k -> a -> FM k a -> FM k a
- insertSeq :: (Eq k, Sequence seq) => seq (k, a) -> FM k a -> FM k a
- union :: Eq k => FM k a -> FM k a -> FM k a
- unionSeq :: (Eq k, Sequence seq) => seq (FM k a) -> FM k a
- delete :: Eq k => k -> FM k a -> FM k a
- deleteAll :: Eq k => k -> FM k a -> FM k a
- deleteSeq :: (Eq k, Sequence seq) => seq k -> FM k a -> FM k a
- null :: Eq k => FM k a -> Bool
- size :: Eq k => FM k a -> Int
- member :: Eq k => k -> FM k a -> Bool
- count :: Eq k => k -> FM k a -> Int
- lookup :: Eq k => k -> FM k a -> a
- lookupM :: (Eq k, Monad rm) => k -> FM k a -> rm a
- lookupAll :: (Eq k, Sequence seq) => k -> FM k a -> seq a
- lookupAndDelete :: Eq k => k -> FM k a -> (a, FM k a)
- lookupAndDeleteM :: (Eq k, Monad rm) => k -> FM k a -> rm (a, FM k a)
- lookupAndDeleteAll :: (Eq k, Sequence seq) => k -> FM k a -> (seq a, FM k a)
- lookupWithDefault :: Eq k => a -> k -> FM k a -> a
- adjust :: Eq k => (a -> a) -> k -> FM k a -> FM k a
- adjustAll :: Eq k => (a -> a) -> k -> FM k a -> FM k a
- adjustOrInsert :: Eq k => (a -> a) -> a -> k -> FM k a -> FM k a
- adjustAllOrInsert :: Eq k => (a -> a) -> a -> k -> FM k a -> FM k a
- adjustOrDelete :: Eq k => (a -> Maybe a) -> k -> FM k a -> FM k a
- adjustOrDeleteAll :: Eq k => (a -> Maybe a) -> k -> FM k a -> FM k a
- strict :: FM k a -> FM k a
- strictWith :: (a -> b) -> FM k a -> FM k a
- map :: Eq k => (a -> b) -> FM k a -> FM k b
- fold :: Eq k => (a -> b -> b) -> b -> FM k a -> b
- fold' :: Eq k => (a -> b -> b) -> b -> FM k a -> b
- fold1 :: Eq k => (a -> a -> a) -> FM k a -> a
- fold1' :: Eq k => (a -> a -> a) -> FM k a -> a
- filter :: Eq k => (a -> Bool) -> FM k a -> FM k a
- partition :: Eq k => (a -> Bool) -> FM k a -> (FM k a, FM k a)
- elements :: (Eq k, Sequence seq) => FM k a -> seq a
- structuralInvariant :: Eq k => FM k a -> Bool
- minView :: (Ord k, Monad m) => FM k a -> m (a, FM k a)
- minElem :: Ord k => FM k a -> a
- deleteMin :: Ord k => FM k a -> FM k a
- unsafeInsertMin :: Ord k => k -> a -> FM k a -> FM k a
- maxView :: (Ord k, Monad m) => FM k a -> m (a, FM k a)
- maxElem :: Ord k => FM k a -> a
- deleteMax :: Ord k => FM k a -> FM k a
- unsafeInsertMax :: Ord k => k -> a -> FM k a -> FM k a
- foldr :: Ord k => (a -> b -> b) -> b -> FM k a -> b
- foldr' :: Ord k => (a -> b -> b) -> b -> FM k a -> b
- foldl :: Ord k => (b -> a -> b) -> b -> FM k a -> b
- foldl' :: Ord k => (b -> a -> b) -> b -> FM k a -> b
- foldr1 :: Ord k => (a -> a -> a) -> FM k a -> a
- foldr1' :: Ord k => (a -> a -> a) -> FM k a -> a
- foldl1 :: Ord k => (a -> a -> a) -> FM k a -> a
- foldl1' :: Ord k => (a -> a -> a) -> FM k a -> a
- unsafeFromOrdSeq :: (Ord k, Sequence seq) => seq (k, a) -> FM k a
- unsafeAppend :: Ord k => FM k a -> FM k a -> FM k a
- filterLT :: Ord k => k -> FM k a -> FM k a
- filterLE :: Ord k => k -> FM k a -> FM k a
- filterGT :: Ord k => k -> FM k a -> FM k a
- filterGE :: Ord k => k -> FM k a -> FM k a
- partitionLT_GE :: Ord k => k -> FM k a -> (FM k a, FM k a)
- partitionLE_GT :: Ord k => k -> FM k a -> (FM k a, FM k a)
- partitionLT_GT :: Ord k => k -> FM k a -> (FM k a, FM k a)
- toSeq :: (Eq k, Sequence seq) => FM k a -> seq (k, a)
- keys :: (Eq k, Sequence seq) => FM k a -> seq k
- mapWithKey :: Eq k => (k -> a -> b) -> FM k a -> FM k b
- foldWithKey :: Eq k => (k -> a -> b -> b) -> b -> FM k a -> b
- foldWithKey' :: Eq k => (k -> a -> b -> b) -> b -> FM k a -> b
- filterWithKey :: Eq k => (k -> a -> Bool) -> FM k a -> FM k a
- partitionWithKey :: Eq k => (k -> a -> Bool) -> FM k a -> (FM k a, FM k a)
- minViewWithKey :: (Ord k, Monad m) => FM k a -> m ((k, a), FM k a)
- minElemWithKey :: Ord k => FM k a -> (k, a)
- maxViewWithKey :: (Ord k, Monad m) => FM k a -> m ((k, a), FM k a)
- maxElemWithKey :: Ord k => FM k a -> (k, a)
- foldrWithKey :: Ord k => (k -> a -> b -> b) -> b -> FM k a -> b
- foldrWithKey' :: Ord k => (k -> a -> b -> b) -> b -> FM k a -> b
- foldlWithKey :: Ord k => (b -> k -> a -> b) -> b -> FM k a -> b
- foldlWithKey' :: Ord k => (b -> k -> a -> b) -> b -> FM k a -> b
- toOrdSeq :: (Ord k, Sequence seq) => FM k a -> seq (k, a)
- fromSeqWith :: (Eq k, Sequence seq) => (a -> a -> a) -> seq (k, a) -> FM k a
- fromSeqWithKey :: (Eq k, Sequence seq) => (k -> a -> a -> a) -> seq (k, a) -> FM k a
- insertWith :: Eq k => (a -> a -> a) -> k -> a -> FM k a -> FM k a
- insertWithKey :: Eq k => (k -> a -> a -> a) -> k -> a -> FM k a -> FM k a
- insertSeqWith :: (Eq k, Sequence seq) => (a -> a -> a) -> seq (k, a) -> FM k a -> FM k a
- insertSeqWithKey :: (Eq k, Sequence seq) => (k -> a -> a -> a) -> seq (k, a) -> FM k a -> FM k a
- unionl :: Eq k => FM k a -> FM k a -> FM k a
- unionr :: Eq k => FM k a -> FM k a -> FM k a
- unionWith :: Eq k => (a -> a -> a) -> FM k a -> FM k a -> FM k a
- unionSeqWith :: (Eq k, Sequence seq) => (a -> a -> a) -> seq (FM k a) -> FM k a
- intersectionWith :: Eq k => (a -> b -> c) -> FM k a -> FM k b -> FM k c
- difference :: Eq k => FM k a -> FM k b -> FM k a
- properSubset :: Eq k => FM k a -> FM k b -> Bool
- subset :: Eq k => FM k a -> FM k b -> Bool
- properSubmapBy :: Eq k => (a -> a -> Bool) -> FM k a -> FM k a -> Bool
- submapBy :: Eq k => (a -> a -> Bool) -> FM k a -> FM k a -> Bool
- sameMapBy :: Eq k => (a -> a -> Bool) -> FM k a -> FM k a -> Bool
- properSubmap :: (Eq k, Eq a) => FM k a -> FM k a -> Bool
- submap :: (Eq k, Eq a) => FM k a -> FM k a -> Bool
- sameMap :: (Eq k, Eq a) => FM k a -> FM k a -> Bool
- unionWithKey :: Eq k => (k -> a -> a -> a) -> FM k a -> FM k a -> FM k a
- unionSeqWithKey :: (Eq k, Sequence seq) => (k -> a -> a -> a) -> seq (FM k a) -> FM k a
- intersectionWithKey :: Eq k => (k -> a -> b -> c) -> FM k a -> FM k b -> FM k c
- moduleName :: String
Type of simple association lists
Instances
Eq k => Functor (FM k) Source # | |
Eq k => AssocX (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList Methods singleton :: k -> a -> FM k a Source # fromSeq :: Sequence seq => seq (k, a) -> FM k a Source # insert :: k -> a -> FM k a -> FM k a Source # insertSeq :: Sequence seq => seq (k, a) -> FM k a -> FM k a Source # union :: FM k a -> FM k a -> FM k a Source # unionSeq :: Sequence seq => seq (FM k a) -> FM k a Source # delete :: k -> FM k a -> FM k a Source # deleteAll :: k -> FM k a -> FM k a Source # deleteSeq :: Sequence seq => seq k -> FM k a -> FM k a Source # null :: FM k a -> Bool Source # size :: FM k a -> Int Source # member :: k -> FM k a -> Bool Source # count :: k -> FM k a -> Int Source # lookup :: k -> FM k a -> a Source # lookupM :: Monad rm => k -> FM k a -> rm a Source # lookupAll :: Sequence seq => k -> FM k a -> seq a Source # lookupAndDelete :: k -> FM k a -> (a, FM k a) Source # lookupAndDeleteM :: Monad rm => k -> FM k a -> rm (a, FM k a) Source # lookupAndDeleteAll :: Sequence seq => k -> FM k a -> (seq a, FM k a) Source # lookupWithDefault :: a -> k -> FM k a -> a Source # adjust :: (a -> a) -> k -> FM k a -> FM k a Source # adjustAll :: (a -> a) -> k -> FM k a -> FM k a Source # adjustOrInsert :: (a -> a) -> a -> k -> FM k a -> FM k a Source # adjustAllOrInsert :: (a -> a) -> a -> k -> FM k a -> FM k a Source # adjustOrDelete :: (a -> Maybe a) -> k -> FM k a -> FM k a Source # adjustOrDeleteAll :: (a -> Maybe a) -> k -> FM k a -> FM k a Source # fold :: (a -> b -> b) -> b -> FM k a -> b Source # fold' :: (a -> b -> b) -> b -> FM k a -> b Source # fold1 :: (a -> a -> a) -> FM k a -> a Source # fold1' :: (a -> a -> a) -> FM k a -> a Source # filter :: (a -> Bool) -> FM k a -> FM k a Source # partition :: (a -> Bool) -> FM k a -> (FM k a, FM k a) Source # elements :: Sequence seq => FM k a -> seq a Source # strict :: FM k a -> FM k a Source # strictWith :: (a -> b) -> FM k a -> FM k a Source # structuralInvariant :: FM k a -> Bool Source # instanceName :: FM k a -> String Source # | |
Ord k => OrdAssocX (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList Methods minView :: Monad rm => FM k a -> rm (a, FM k a) Source # minElem :: FM k a -> a Source # deleteMin :: FM k a -> FM k a Source # unsafeInsertMin :: k -> a -> FM k a -> FM k a Source # maxView :: Monad rm => FM k a -> rm (a, FM k a) Source # maxElem :: FM k a -> a Source # deleteMax :: FM k a -> FM k a Source # unsafeInsertMax :: k -> a -> FM k a -> FM k a Source # foldr :: (a -> b -> b) -> b -> FM k a -> b Source # foldr' :: (a -> b -> b) -> b -> FM k a -> b Source # foldl :: (b -> a -> b) -> b -> FM k a -> b Source # foldl' :: (b -> a -> b) -> b -> FM k a -> b Source # foldr1 :: (a -> a -> a) -> FM k a -> a Source # foldr1' :: (a -> a -> a) -> FM k a -> a Source # foldl1 :: (a -> a -> a) -> FM k a -> a Source # foldl1' :: (a -> a -> a) -> FM k a -> a Source # unsafeFromOrdSeq :: Sequence seq => seq (k, a) -> FM k a Source # unsafeAppend :: FM k a -> FM k a -> FM k a Source # filterLT :: k -> FM k a -> FM k a Source # filterLE :: k -> FM k a -> FM k a Source # filterGT :: k -> FM k a -> FM k a Source # filterGE :: k -> FM k a -> FM k a Source # partitionLT_GE :: k -> FM k a -> (FM k a, FM k a) Source # | |
Eq k => FiniteMapX (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList Methods fromSeqWith :: Sequence seq => (a -> a -> a) -> seq (k, a) -> FM k a Source # fromSeqWithKey :: Sequence seq => (k -> a -> a -> a) -> seq (k, a) -> FM k a Source # insertWith :: (a -> a -> a) -> k -> a -> FM k a -> FM k a Source # insertWithKey :: (k -> a -> a -> a) -> k -> a -> FM k a -> FM k a Source # insertSeqWith :: Sequence seq => (a -> a -> a) -> seq (k, a) -> FM k a -> FM k a Source # insertSeqWithKey :: Sequence seq => (k -> a -> a -> a) -> seq (k, a) -> FM k a -> FM k a Source # unionl :: FM k a -> FM k a -> FM k a Source # unionr :: FM k a -> FM k a -> FM k a Source # unionWith :: (a -> a -> a) -> FM k a -> FM k a -> FM k a Source # unionSeqWith :: Sequence seq => (a -> a -> a) -> seq (FM k a) -> FM k a Source # intersectionWith :: (a -> b -> c) -> FM k a -> FM k b -> FM k c Source # difference :: FM k a -> FM k b -> FM k a Source # properSubset :: FM k a -> FM k b -> Bool Source # subset :: FM k a -> FM k b -> Bool Source # submapBy :: (a -> a -> Bool) -> FM k a -> FM k a -> Bool Source # properSubmapBy :: (a -> a -> Bool) -> FM k a -> FM k a -> Bool Source # sameMapBy :: (a -> a -> Bool) -> FM k a -> FM k a -> Bool Source # | |
Ord k => OrdFiniteMapX (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList | |
Eq k => Assoc (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList Methods toSeq :: Sequence seq => FM k a -> seq (k, a) Source # keys :: Sequence seq => FM k a -> seq k Source # mapWithKey :: (k -> a -> b) -> FM k a -> FM k b Source # foldWithKey :: (k -> a -> b -> b) -> b -> FM k a -> b Source # foldWithKey' :: (k -> a -> b -> b) -> b -> FM k a -> b Source # filterWithKey :: (k -> a -> Bool) -> FM k a -> FM k a Source # partitionWithKey :: (k -> a -> Bool) -> FM k a -> (FM k a, FM k a) Source # | |
Ord k => OrdAssoc (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList Methods minViewWithKey :: Monad rm => FM k a -> rm ((k, a), FM k a) Source # minElemWithKey :: FM k a -> (k, a) Source # maxViewWithKey :: Monad rm => FM k a -> rm ((k, a), FM k a) Source # maxElemWithKey :: FM k a -> (k, a) Source # foldrWithKey :: (k -> a -> b -> b) -> b -> FM k a -> b Source # foldrWithKey' :: (k -> a -> b -> b) -> b -> FM k a -> b Source # foldlWithKey :: (b -> k -> a -> b) -> b -> FM k a -> b Source # foldlWithKey' :: (b -> k -> a -> b) -> b -> FM k a -> b Source # | |
Eq k => FiniteMap (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList | |
Ord k => OrdFiniteMap (FM k) k Source # | |
Defined in Data.Edison.Assoc.AssocList | |
(Eq k, Eq a) => Eq (FM k a) Source # | |
(Ord k, Ord a) => Ord (FM k a) Source # | |
(Eq k, Read k, Read a) => Read (FM k a) Source # | |
Defined in Data.Edison.Assoc.AssocList | |
(Eq k, Show k, Show a) => Show (FM k a) Source # | |
Eq k => Semigroup (FM k a) Source # | |
Eq k => Monoid (FM k a) Source # | |
(Eq k, Arbitrary k, Arbitrary a) => Arbitrary (FM k a) Source # | |
(Eq k, CoArbitrary k, CoArbitrary a) => CoArbitrary (FM k a) Source # | |
Defined in Data.Edison.Assoc.AssocList Methods coarbitrary :: FM k a -> Gen b -> Gen b |
AssocX operations
lookupAndDelete :: Eq k => k -> FM k a -> (a, FM k a) Source #
lookupAndDeleteM :: (Eq k, Monad rm) => k -> FM k a -> rm (a, FM k a) Source #
lookupWithDefault :: Eq k => a -> k -> FM k a -> a Source #
adjustOrInsert :: Eq k => (a -> a) -> a -> k -> FM k a -> FM k a Source #
adjustAllOrInsert :: Eq k => (a -> a) -> a -> k -> FM k a -> FM k a Source #
adjustOrDelete :: Eq k => (a -> Maybe a) -> k -> FM k a -> FM k a Source #
adjustOrDeleteAll :: Eq k => (a -> Maybe a) -> k -> FM k a -> FM k a Source #
strictWith :: (a -> b) -> FM k a -> FM k a Source #
structuralInvariant :: Eq k => FM k a -> Bool Source #
OrdAssocX operations
unsafeInsertMin :: Ord k => k -> a -> FM k a -> FM k a Source #
unsafeInsertMax :: Ord k => k -> a -> FM k a -> FM k a Source #
unsafeFromOrdSeq :: (Ord k, Sequence seq) => seq (k, a) -> FM k a Source #
Assoc operations
mapWithKey :: Eq k => (k -> a -> b) -> FM k a -> FM k b Source #
foldWithKey :: Eq k => (k -> a -> b -> b) -> b -> FM k a -> b Source #
foldWithKey' :: Eq k => (k -> a -> b -> b) -> b -> FM k a -> b Source #
filterWithKey :: Eq k => (k -> a -> Bool) -> FM k a -> FM k a Source #
OrdAssoc operations
minViewWithKey :: (Ord k, Monad m) => FM k a -> m ((k, a), FM k a) Source #
minElemWithKey :: Ord k => FM k a -> (k, a) Source #
maxViewWithKey :: (Ord k, Monad m) => FM k a -> m ((k, a), FM k a) Source #
maxElemWithKey :: Ord k => FM k a -> (k, a) Source #
foldrWithKey :: Ord k => (k -> a -> b -> b) -> b -> FM k a -> b Source #
foldrWithKey' :: Ord k => (k -> a -> b -> b) -> b -> FM k a -> b Source #
foldlWithKey :: Ord k => (b -> k -> a -> b) -> b -> FM k a -> b Source #
foldlWithKey' :: Ord k => (b -> k -> a -> b) -> b -> FM k a -> b Source #
FiniteMapX operations
fromSeqWith :: (Eq k, Sequence seq) => (a -> a -> a) -> seq (k, a) -> FM k a Source #
fromSeqWithKey :: (Eq k, Sequence seq) => (k -> a -> a -> a) -> seq (k, a) -> FM k a Source #
insertWith :: Eq k => (a -> a -> a) -> k -> a -> FM k a -> FM k a Source #
insertWithKey :: Eq k => (k -> a -> a -> a) -> k -> a -> FM k a -> FM k a Source #
insertSeqWithKey :: (Eq k, Sequence seq) => (k -> a -> a -> a) -> seq (k, a) -> FM k a -> FM k a Source #
properSubset :: Eq k => FM k a -> FM k b -> Bool Source #
properSubmapBy :: Eq k => (a -> a -> Bool) -> FM k a -> FM k a -> Bool Source #
properSubmap :: (Eq k, Eq a) => FM k a -> FM k a -> Bool Source #
FiniteMap operations
Documentation
moduleName :: String Source #