ghc-8.0.0.20160111: The GHC API

Safe HaskellNone
LanguageHaskell2010

UniqDFM

Contents

Synopsis

Unique-keyed deterministic mappings

data UniqDFM ele

Type of unique deterministic finite maps

Instances

Functor UniqDFM 

Methods

fmap :: (a -> b) -> UniqDFM a -> UniqDFM b Source

(<$) :: a -> UniqDFM b -> UniqDFM a Source

Data ele => Data (UniqDFM ele) 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UniqDFM ele -> c (UniqDFM ele) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (UniqDFM ele) Source

toConstr :: UniqDFM ele -> Constr Source

dataTypeOf :: UniqDFM ele -> DataType Source

dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (UniqDFM ele)) Source

dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (UniqDFM ele)) Source

gmapT :: (forall b. Data b => b -> b) -> UniqDFM ele -> UniqDFM ele Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UniqDFM ele -> r Source

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UniqDFM ele -> r Source

gmapQ :: (forall d. Data d => d -> u) -> UniqDFM ele -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> UniqDFM ele -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> UniqDFM ele -> m (UniqDFM ele) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UniqDFM ele -> m (UniqDFM ele) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UniqDFM ele -> m (UniqDFM ele) Source

Outputable a => Outputable (UniqDFM a) 

Methods

ppr :: UniqDFM a -> SDoc

pprPrec :: Rational -> UniqDFM a -> SDoc

Manipulating those mappings

unitUDFM :: Uniquable key => key -> elt -> UniqDFM elt

addToUDFM :: Uniquable key => UniqDFM elt -> key -> elt -> UniqDFM elt

delFromUDFM :: Uniquable key => UniqDFM elt -> key -> UniqDFM elt

delListFromUDFM :: Uniquable key => UniqDFM elt -> [key] -> UniqDFM elt

Delete a list of elements from a UniqDFM

adjustUDFM :: Uniquable key => (elt -> elt) -> UniqDFM elt -> key -> UniqDFM elt

Apply a function to a particular element

alterUDFM :: Uniquable key => (Maybe elt -> Maybe elt) -> UniqDFM elt -> key -> UniqDFM elt

The expression (alterUDFM f k map) alters value x at k, or absence thereof. alterUDFM can be used to insert, delete, or update a value in UniqDFM. Use addToUDFM, delFromUDFM or adjustUDFM when possible, they are more efficient.

mapUDFM :: (elt1 -> elt2) -> UniqDFM elt1 -> UniqDFM elt2

Map a function over every value in a UniqDFM

plusUDFM :: UniqDFM elt -> UniqDFM elt -> UniqDFM elt

lookupUDFM :: Uniquable key => UniqDFM elt -> key -> Maybe elt

elemUDFM :: Uniquable key => key -> UniqDFM elt -> Bool

foldUDFM :: (elt -> a -> a) -> a -> UniqDFM elt -> a

Performs a deterministic fold over the UniqDFM. It's O(n log n) while the corresponding function on UniqFM is O(n).

eltsUDFM :: UniqDFM elt -> [elt]

filterUDFM :: (elt -> Bool) -> UniqDFM elt -> UniqDFM elt

sizeUDFM :: UniqDFM elt -> Int

intersectUDFM :: UniqDFM elt -> UniqDFM elt -> UniqDFM elt

disjointUDFM :: UniqDFM elt -> UniqDFM elt -> Bool

minusUDFM :: UniqDFM elt1 -> UniqDFM elt2 -> UniqDFM elt1

partitionUDFM :: (elt -> Bool) -> UniqDFM elt -> (UniqDFM elt, UniqDFM elt)

Partition UniqDFM into two UniqDFMs according to the predicate

udfmToList :: UniqDFM elt -> [(Unique, elt)]

Converts UniqDFM to a list, with elements in deterministic order. It's O(n log n) while the corresponding function on UniqFM is O(n).

udfmToUfm :: UniqDFM elt -> UniqFM elt

This allows for lossy conversion from UniqDFM to UniqFM