| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
UniqFM
Synopsis
- data UniqFM ele
- newtype NonDetUniqFM ele = NonDetUniqFM {}
- emptyUFM :: UniqFM elt
- unitUFM :: Uniquable key => key -> elt -> UniqFM elt
- unitDirectlyUFM :: Unique -> elt -> UniqFM elt
- listToUFM :: Uniquable key => [(key, elt)] -> UniqFM elt
- listToUFM_Directly :: [(Unique, elt)] -> UniqFM elt
- listToUFM_C :: Uniquable key => (elt -> elt -> elt) -> [(key, elt)] -> UniqFM elt
- addToUFM :: Uniquable key => UniqFM elt -> key -> elt -> UniqFM elt
- addToUFM_C :: Uniquable key => (elt -> elt -> elt) -> UniqFM elt -> key -> elt -> UniqFM elt
- addToUFM_Acc :: Uniquable key => (elt -> elts -> elts) -> (elt -> elts) -> UniqFM elts -> key -> elt -> UniqFM elts
- addListToUFM :: Uniquable key => UniqFM elt -> [(key, elt)] -> UniqFM elt
- addListToUFM_C :: Uniquable key => (elt -> elt -> elt) -> UniqFM elt -> [(key, elt)] -> UniqFM elt
- addToUFM_Directly :: UniqFM elt -> Unique -> elt -> UniqFM elt
- addListToUFM_Directly :: UniqFM elt -> [(Unique, elt)] -> UniqFM elt
- adjustUFM :: Uniquable key => (elt -> elt) -> UniqFM elt -> key -> UniqFM elt
- alterUFM :: Uniquable key => (Maybe elt -> Maybe elt) -> UniqFM elt -> key -> UniqFM elt
- adjustUFM_Directly :: (elt -> elt) -> UniqFM elt -> Unique -> UniqFM elt
- delFromUFM :: Uniquable key => UniqFM elt -> key -> UniqFM elt
- delFromUFM_Directly :: UniqFM elt -> Unique -> UniqFM elt
- delListFromUFM :: Uniquable key => UniqFM elt -> [key] -> UniqFM elt
- delListFromUFM_Directly :: UniqFM elt -> [Unique] -> UniqFM elt
- plusUFM :: UniqFM elt -> UniqFM elt -> UniqFM elt
- plusUFM_C :: (elt -> elt -> elt) -> UniqFM elt -> UniqFM elt -> UniqFM elt
- plusUFM_CD :: (elt -> elt -> elt) -> UniqFM elt -> elt -> UniqFM elt -> elt -> UniqFM elt
- plusMaybeUFM_C :: (elt -> elt -> Maybe elt) -> UniqFM elt -> UniqFM elt -> UniqFM elt
- plusUFMList :: [UniqFM elt] -> UniqFM elt
- minusUFM :: UniqFM elt1 -> UniqFM elt2 -> UniqFM elt1
- intersectUFM :: UniqFM elt1 -> UniqFM elt2 -> UniqFM elt1
- intersectUFM_C :: (elt1 -> elt2 -> elt3) -> UniqFM elt1 -> UniqFM elt2 -> UniqFM elt3
- disjointUFM :: UniqFM elt1 -> UniqFM elt2 -> Bool
- equalKeysUFM :: UniqFM a -> UniqFM b -> Bool
- nonDetFoldUFM :: (elt -> a -> a) -> a -> UniqFM elt -> a
- foldUFM :: (elt -> a -> a) -> a -> UniqFM elt -> a
- nonDetFoldUFM_Directly :: (Unique -> elt -> a -> a) -> a -> UniqFM elt -> a
- anyUFM :: (elt -> Bool) -> UniqFM elt -> Bool
- allUFM :: (elt -> Bool) -> UniqFM elt -> Bool
- seqEltsUFM :: ([elt] -> ()) -> UniqFM elt -> ()
- mapUFM :: (elt1 -> elt2) -> UniqFM elt1 -> UniqFM elt2
- mapUFM_Directly :: (Unique -> elt1 -> elt2) -> UniqFM elt1 -> UniqFM elt2
- elemUFM :: Uniquable key => key -> UniqFM elt -> Bool
- elemUFM_Directly :: Unique -> UniqFM elt -> Bool
- filterUFM :: (elt -> Bool) -> UniqFM elt -> UniqFM elt
- filterUFM_Directly :: (Unique -> elt -> Bool) -> UniqFM elt -> UniqFM elt
- partitionUFM :: (elt -> Bool) -> UniqFM elt -> (UniqFM elt, UniqFM elt)
- sizeUFM :: UniqFM elt -> Int
- isNullUFM :: UniqFM elt -> Bool
- lookupUFM :: Uniquable key => UniqFM elt -> key -> Maybe elt
- lookupUFM_Directly :: UniqFM elt -> Unique -> Maybe elt
- lookupWithDefaultUFM :: Uniquable key => UniqFM elt -> elt -> key -> elt
- lookupWithDefaultUFM_Directly :: UniqFM elt -> elt -> Unique -> elt
- nonDetEltsUFM :: UniqFM elt -> [elt]
- eltsUFM :: UniqFM elt -> [elt]
- nonDetKeysUFM :: UniqFM elt -> [Unique]
- ufmToSet_Directly :: UniqFM elt -> IntSet
- nonDetUFMToList :: UniqFM elt -> [(Unique, elt)]
- ufmToIntMap :: UniqFM elt -> IntMap elt
- pprUniqFM :: (a -> SDoc) -> UniqFM a -> SDoc
- pprUFM :: UniqFM a -> ([a] -> SDoc) -> SDoc
- pprUFMWithKeys :: UniqFM a -> ([(Unique, a)] -> SDoc) -> SDoc
- pluralUFM :: UniqFM a -> SDoc
Unique-keyed mappings
Instances
| Functor UniqFM Source # | |
| Eq ele => Eq (UniqFM ele) Source # | |
| Data ele => Data (UniqFM ele) Source # | |
Defined in UniqFM Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> UniqFM ele -> c (UniqFM ele) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (UniqFM ele) # toConstr :: UniqFM ele -> Constr # dataTypeOf :: UniqFM ele -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (UniqFM ele)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (UniqFM ele)) # gmapT :: (forall b. Data b => b -> b) -> UniqFM ele -> UniqFM ele # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> UniqFM ele -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> UniqFM ele -> r # gmapQ :: (forall d. Data d => d -> u) -> UniqFM ele -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> UniqFM ele -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> UniqFM ele -> m (UniqFM ele) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> UniqFM ele -> m (UniqFM ele) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> UniqFM ele -> m (UniqFM ele) # | |
| Semigroup (UniqFM a) Source # | |
| Monoid (UniqFM a) Source # | |
| Outputable a => Outputable (UniqFM a) Source # | |
newtype NonDetUniqFM ele Source #
A wrapper around UniqFM with the sole purpose of informing call sites
that the provided Foldable and Traversable instances are
nondeterministic.
If you use this please provide a justification why it doesn't introduce
nondeterminism.
See Note [Deterministic UniqFM] in UniqDFM to learn about determinism.
Constructors
| NonDetUniqFM | |
Instances
| Functor NonDetUniqFM Source # | |
Defined in UniqFM Methods fmap :: (a -> b) -> NonDetUniqFM a -> NonDetUniqFM b # (<$) :: a -> NonDetUniqFM b -> NonDetUniqFM a # | |
| Foldable NonDetUniqFM Source # | Inherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in UniqDFM to learn about determinism. |
Defined in UniqFM Methods fold :: Monoid m => NonDetUniqFM m -> m # foldMap :: Monoid m => (a -> m) -> NonDetUniqFM a -> m # foldMap' :: Monoid m => (a -> m) -> NonDetUniqFM a -> m # foldr :: (a -> b -> b) -> b -> NonDetUniqFM a -> b # foldr' :: (a -> b -> b) -> b -> NonDetUniqFM a -> b # foldl :: (b -> a -> b) -> b -> NonDetUniqFM a -> b # foldl' :: (b -> a -> b) -> b -> NonDetUniqFM a -> b # foldr1 :: (a -> a -> a) -> NonDetUniqFM a -> a # foldl1 :: (a -> a -> a) -> NonDetUniqFM a -> a # toList :: NonDetUniqFM a -> [a] # null :: NonDetUniqFM a -> Bool # length :: NonDetUniqFM a -> Int # elem :: Eq a => a -> NonDetUniqFM a -> Bool # maximum :: Ord a => NonDetUniqFM a -> a # minimum :: Ord a => NonDetUniqFM a -> a # sum :: Num a => NonDetUniqFM a -> a # product :: Num a => NonDetUniqFM a -> a # | |
| Traversable NonDetUniqFM Source # | Inherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in UniqDFM to learn about determinism. |
Defined in UniqFM Methods traverse :: Applicative f => (a -> f b) -> NonDetUniqFM a -> f (NonDetUniqFM b) # sequenceA :: Applicative f => NonDetUniqFM (f a) -> f (NonDetUniqFM a) # mapM :: Monad m => (a -> m b) -> NonDetUniqFM a -> m (NonDetUniqFM b) # sequence :: Monad m => NonDetUniqFM (m a) -> m (NonDetUniqFM a) # | |
Manipulating those mappings
unitDirectlyUFM :: Unique -> elt -> UniqFM elt Source #
listToUFM_Directly :: [(Unique, elt)] -> UniqFM elt Source #
listToUFM_C :: Uniquable key => (elt -> elt -> elt) -> [(key, elt)] -> UniqFM elt Source #
addToUFM_C :: Uniquable key => (elt -> elt -> elt) -> UniqFM elt -> key -> elt -> UniqFM elt Source #
addToUFM_Acc :: Uniquable key => (elt -> elts -> elts) -> (elt -> elts) -> UniqFM elts -> key -> elt -> UniqFM elts Source #
addListToUFM_C :: Uniquable key => (elt -> elt -> elt) -> UniqFM elt -> [(key, elt)] -> UniqFM elt Source #
plusUFM_CD :: (elt -> elt -> elt) -> UniqFM elt -> elt -> UniqFM elt -> elt -> UniqFM elt Source #
`plusUFM_CD f m1 d1 m2 d2` merges the maps using f as the
combinding function and d1 resp. d2 as the default value if
there is no entry in m1 reps. m2. The domain is the union of
the domains of m1 and m2.
Representative example:
plusUFM_CD f {A: 1, B: 2} 23 {B: 3, C: 4} 42
== {A: f 1 42, B: f 2 3, C: f 23 4 }
plusUFMList :: [UniqFM elt] -> UniqFM elt Source #
nonDetFoldUFM :: (elt -> a -> a) -> a -> UniqFM elt -> a Source #
nonDetFoldUFM_Directly :: (Unique -> elt -> a -> a) -> a -> UniqFM elt -> a Source #
seqEltsUFM :: ([elt] -> ()) -> UniqFM elt -> () Source #
lookupWithDefaultUFM :: Uniquable key => UniqFM elt -> elt -> key -> elt Source #
lookupWithDefaultUFM_Directly :: UniqFM elt -> elt -> Unique -> elt Source #
nonDetEltsUFM :: UniqFM elt -> [elt] Source #
nonDetKeysUFM :: UniqFM elt -> [Unique] Source #
ufmToSet_Directly :: UniqFM elt -> IntSet Source #
nonDetUFMToList :: UniqFM elt -> [(Unique, elt)] Source #
ufmToIntMap :: UniqFM elt -> IntMap elt Source #
Arguments
| :: UniqFM a | The things to be pretty printed |
| -> ([a] -> SDoc) | The pretty printing function to use on the elements |
| -> SDoc |
|
Pretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM.
Arguments
| :: UniqFM a | The things to be pretty printed |
| -> ([(Unique, a)] -> SDoc) | The pretty printing function to use on the elements |
| -> SDoc |
|
Pretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetUFMToList.