TrieMap

ghc-8.6.3: The GHC API

Safe Haskell | None
Language | Haskell2010

TrieMap

Contents

- Maps over `Maybe` values
- Maps over `List` values
- Maps over `Literal`s
- `TrieMap` class
- Things helpful for adding additional Instances.
- Map for leaf compression

Synopsis

- data MaybeMap m a
- data ListMap m a
- type LiteralMap a = Map Literal a
- class TrieMap m where
  - type Key m :: *
  - emptyTM :: m a
  - lookupTM :: forall b. Key m -> m b -> Maybe b
  - alterTM :: forall b. Key m -> XT b -> m b -> m b
  - mapTM :: (a -> b) -> m a -> m b
  - foldTM :: (a -> b -> b) -> m a -> b -> b
- insertTM :: TrieMap m => Key m -> a -> m a -> m a
- deleteTM :: TrieMap m => Key m -> m a -> m a
- (>.>) :: (a -> b) -> (b -> c) -> a -> c
- (|>) :: a -> (a -> b) -> b
- (|>>) :: TrieMap m2 => (XT (m2 a) -> m1 (m2 a) -> m1 (m2 a)) -> (m2 a -> m2 a) -> m1 (m2 a) -> m1 (m2 a)
- type XT a = Maybe a -> Maybe a
- foldMaybe :: (a -> b -> b) -> Maybe a -> b -> b
- data GenMap m a
- lkG :: (Eq (Key m), TrieMap m) => Key m -> GenMap m a -> Maybe a
- xtG :: (Eq (Key m), TrieMap m) => Key m -> XT a -> GenMap m a -> GenMap m a
- mapG :: TrieMap m => (a -> b) -> GenMap m a -> GenMap m b
- fdG :: TrieMap m => (a -> b -> b) -> GenMap m a -> b -> b
- xtList :: TrieMap m => (forall b. k -> XT b -> m b -> m b) -> [k] -> XT a -> ListMap m a -> ListMap m a
- lkList :: TrieMap m => (forall b. k -> m b -> Maybe b) -> [k] -> ListMap m a -> Maybe a

# Maps over `Maybe` values

data MaybeMap m a #

Instances

TrieMap m => TrieMap (MaybeMap m) # |
Instance details Defined in TrieMap Associated Types type Key (MaybeMap m) :: Type # Methods emptyTM :: MaybeMap m a # lookupTM :: Key (MaybeMap m) -> MaybeMap m b -> Maybe b # alterTM :: Key (MaybeMap m) -> XT b -> MaybeMap m b -> MaybeMap m b # mapTM :: (a -> b) -> MaybeMap m a -> MaybeMap m b # foldTM :: (a -> b -> b) -> MaybeMap m a -> b -> b #
type Key (MaybeMap m) # |
Instance details Defined in TrieMap type Key (MaybeMap m) = Maybe (Key m)

# Maps over `List` values

data ListMap m a #

Instances

TrieMap m => TrieMap (ListMap m) # |
Instance details Defined in TrieMap Associated Types type Key (ListMap m) :: Type # Methods emptyTM :: ListMap m a # lookupTM :: Key (ListMap m) -> ListMap m b -> Maybe b # alterTM :: Key (ListMap m) -> XT b -> ListMap m b -> ListMap m b # mapTM :: (a -> b) -> ListMap m a -> ListMap m b # foldTM :: (a -> b -> b) -> ListMap m a -> b -> b #
(TrieMap m, Outputable a) => Outputable (ListMap m a) # |
Instance details Defined in TrieMap Methods ppr :: ListMap m a -> SDoc # pprPrec :: Rational -> ListMap m a -> SDoc #
type Key (ListMap m) # |
Instance details Defined in TrieMap type Key (ListMap m) = [Key m]

# Maps over `Literal`s

type LiteralMap a = Map Literal a #

# `TrieMap` class

class TrieMap m where #

Associated Types

type Key m :: * #

Methods

emptyTM :: m a #

lookupTM :: forall b. Key m -> m b -> Maybe b #

alterTM :: forall b. Key m -> XT b -> m b -> m b #

mapTM :: (a -> b) -> m a -> m b #

foldTM :: (a -> b -> b) -> m a -> b -> b #

Instances

TrieMap IntMap # |
Instance details Defined in TrieMap Associated Types type Key IntMap :: Type # Methods emptyTM :: IntMap a # lookupTM :: Key IntMap -> IntMap b -> Maybe b # alterTM :: Key IntMap -> XT b -> IntMap b -> IntMap b # mapTM :: (a -> b) -> IntMap a -> IntMap b # foldTM :: (a -> b -> b) -> IntMap a -> b -> b #
TrieMap UniqDFM # |
Instance details Defined in TrieMap Associated Types type Key UniqDFM :: Type # Methods emptyTM :: UniqDFM a # lookupTM :: Key UniqDFM -> UniqDFM b -> Maybe b # alterTM :: Key UniqDFM -> XT b -> UniqDFM b -> UniqDFM b # mapTM :: (a -> b) -> UniqDFM a -> UniqDFM b # foldTM :: (a -> b -> b) -> UniqDFM a -> b -> b #
TrieMap LabelMap # |
Instance details Defined in Hoopl.Label Associated Types type Key LabelMap :: Type # Methods emptyTM :: LabelMap a # lookupTM :: Key LabelMap -> LabelMap b -> Maybe b # alterTM :: Key LabelMap -> XT b -> LabelMap b -> LabelMap b # mapTM :: (a -> b) -> LabelMap a -> LabelMap b # foldTM :: (a -> b -> b) -> LabelMap a -> b -> b #
TrieMap LooseTypeMap # |
Instance details Defined in CoreMap Associated Types type Key LooseTypeMap :: Type # Methods emptyTM :: LooseTypeMap a # lookupTM :: Key LooseTypeMap -> LooseTypeMap b -> Maybe b # alterTM :: Key LooseTypeMap -> XT b -> LooseTypeMap b -> LooseTypeMap b # mapTM :: (a -> b) -> LooseTypeMap a -> LooseTypeMap b # foldTM :: (a -> b -> b) -> LooseTypeMap a -> b -> b #
TrieMap TypeMap # |
Instance details Defined in CoreMap Associated Types type Key TypeMap :: Type # Methods emptyTM :: TypeMap a # lookupTM :: Key TypeMap -> TypeMap b -> Maybe b # alterTM :: Key TypeMap -> XT b -> TypeMap b -> TypeMap b # mapTM :: (a -> b) -> TypeMap a -> TypeMap b # foldTM :: (a -> b -> b) -> TypeMap a -> b -> b #
TrieMap CoreMap # |
Instance details Defined in CoreMap Associated Types type Key CoreMap :: Type # Methods emptyTM :: CoreMap a # lookupTM :: Key CoreMap -> CoreMap b -> Maybe b # alterTM :: Key CoreMap -> XT b -> CoreMap b -> CoreMap b # mapTM :: (a -> b) -> CoreMap a -> CoreMap b # foldTM :: (a -> b -> b) -> CoreMap a -> b -> b #
Ord k => TrieMap (Map k) # |
Instance details Defined in TrieMap Associated Types type Key (Map k) :: Type # Methods emptyTM :: Map k a # lookupTM :: Key (Map k) -> Map k b -> Maybe b # alterTM :: Key (Map k) -> XT b -> Map k b -> Map k b # mapTM :: (a -> b) -> Map k a -> Map k b # foldTM :: (a -> b -> b) -> Map k a -> b -> b #
(Eq (Key m), TrieMap m) => TrieMap (GenMap m) # |
Instance details Defined in TrieMap Associated Types type Key (GenMap m) :: Type # Methods emptyTM :: GenMap m a # lookupTM :: Key (GenMap m) -> GenMap m b -> Maybe b # alterTM :: Key (GenMap m) -> XT b -> GenMap m b -> GenMap m b # mapTM :: (a -> b) -> GenMap m a -> GenMap m b # foldTM :: (a -> b -> b) -> GenMap m a -> b -> b #
TrieMap m => TrieMap (ListMap m) # |
Instance details Defined in TrieMap Associated Types type Key (ListMap m) :: Type # Methods emptyTM :: ListMap m a # lookupTM :: Key (ListMap m) -> ListMap m b -> Maybe b # alterTM :: Key (ListMap m) -> XT b -> ListMap m b -> ListMap m b # mapTM :: (a -> b) -> ListMap m a -> ListMap m b # foldTM :: (a -> b -> b) -> ListMap m a -> b -> b #
TrieMap m => TrieMap (MaybeMap m) # |
Instance details Defined in TrieMap Associated Types type Key (MaybeMap m) :: Type # Methods emptyTM :: MaybeMap m a # lookupTM :: Key (MaybeMap m) -> MaybeMap m b -> Maybe b # alterTM :: Key (MaybeMap m) -> XT b -> MaybeMap m b -> MaybeMap m b # mapTM :: (a -> b) -> MaybeMap m a -> MaybeMap m b # foldTM :: (a -> b -> b) -> MaybeMap m a -> b -> b #

insertTM :: TrieMap m => Key m -> a -> m a -> m a #

deleteTM :: TrieMap m => Key m -> m a -> m a #

# Things helpful for adding additional Instances.

(>.>) :: (a -> b) -> (b -> c) -> a -> c infixr 1 #

(|>) :: a -> (a -> b) -> b infixr 1 #

(|>>) :: TrieMap m2 => (XT (m2 a) -> m1 (m2 a) -> m1 (m2 a)) -> (m2 a -> m2 a) -> m1 (m2 a) -> m1 (m2 a) infixr 1 #

type XT a = Maybe a -> Maybe a #

foldMaybe :: (a -> b -> b) -> Maybe a -> b -> b #

# Map for leaf compression

data GenMap m a #

Instances

(Eq (Key m), TrieMap m) => TrieMap (GenMap m) # |
Instance details Defined in TrieMap Associated Types type Key (GenMap m) :: Type # Methods emptyTM :: GenMap m a # lookupTM :: Key (GenMap m) -> GenMap m b -> Maybe b # alterTM :: Key (GenMap m) -> XT b -> GenMap m b -> GenMap m b # mapTM :: (a -> b) -> GenMap m a -> GenMap m b # foldTM :: (a -> b -> b) -> GenMap m a -> b -> b #
(Outputable a, Outputable (m a)) => Outputable (GenMap m a) # |
Instance details Defined in TrieMap Methods ppr :: GenMap m a -> SDoc # pprPrec :: Rational -> GenMap m a -> SDoc #
type Key (GenMap m) # |
Instance details Defined in TrieMap type Key (GenMap m) = Key m

lkG :: (Eq (Key m), TrieMap m) => Key m -> GenMap m a -> Maybe a #

xtG :: (Eq (Key m), TrieMap m) => Key m -> XT a -> GenMap m a -> GenMap m a #

mapG :: TrieMap m => (a -> b) -> GenMap m a -> GenMap m b #

fdG :: TrieMap m => (a -> b -> b) -> GenMap m a -> b -> b #

xtList :: TrieMap m => (forall b. k -> XT b -> m b -> m b) -> [k] -> XT a -> ListMap m a -> ListMap m a #

lkList :: TrieMap m => (forall b. k -> m b -> Maybe b) -> [k] -> ListMap m a -> Maybe a #