ghc-8.10.0.20191210: The GHC API
Safe HaskellNone
LanguageHaskell2010

CoreMap

Synopsis

Maps over Core expressions

data CoreMap a Source #

CoreMap a is a map from CoreExpr to a. If you are a client, this is the type you want.

Instances

Instances details
TrieMap CoreMap # 
Instance details

Defined in CoreMap

Associated Types

type Key CoreMap Source #

Methods

emptyTM :: CoreMap a Source #

lookupTM :: Key CoreMap -> CoreMap b -> Maybe b Source #

alterTM :: Key CoreMap -> XT b -> CoreMap b -> CoreMap b Source #

mapTM :: (a -> b) -> CoreMap a -> CoreMap b Source #

foldTM :: (a -> b -> b) -> CoreMap a -> b -> b Source #

Outputable a => Outputable (CoreMap a) # 
Instance details

Defined in CoreMap

type Key CoreMap # 
Instance details

Defined in CoreMap

foldCoreMap :: (a -> b -> b) -> b -> CoreMap a -> b Source #

Maps over Exprs

data TypeMap a Source #

TypeMap a is a map from Expr to a. If you are a client, this is the type you want. The keys in this map may have different kinds.

Instances

Instances details
TrieMap TypeMap # 
Instance details

Defined in CoreMap

Associated Types

type Key TypeMap Source #

Methods

emptyTM :: TypeMap a Source #

lookupTM :: Key TypeMap -> TypeMap b -> Maybe b Source #

alterTM :: Key TypeMap -> XT b -> TypeMap b -> TypeMap b Source #

mapTM :: (a -> b) -> TypeMap a -> TypeMap b Source #

foldTM :: (a -> b -> b) -> TypeMap a -> b -> b Source #

type Key TypeMap # 
Instance details

Defined in CoreMap

foldTypeMap :: (a -> b -> b) -> b -> TypeMap a -> b Source #

data LooseTypeMap a Source #

A LooseTypeMap doesn't do a kind-check. Thus, when lookup up (t |> g), you'll find entries inserted under (t), even if (g) is non-reflexive.

Instances

Instances details
TrieMap LooseTypeMap # 
Instance details

Defined in CoreMap

Associated Types

type Key LooseTypeMap Source #

type Key LooseTypeMap # 
Instance details

Defined in CoreMap

With explicit scoping

lookupCME :: CmEnv -> Var -> Maybe BoundVar Source #

extendTypeMapWithScope :: TypeMap a -> CmEnv -> Type -> a -> TypeMap a Source #

Extend a TypeMap with a type in the given context. extendTypeMapWithScope m (mkDeBruijnContext [a,b,c]) t v is equivalent to extendTypeMap m (forall a b c. t) v, but allows reuse of the context over multiple insertions.

mkDeBruijnContext :: [Var] -> CmEnv Source #

Construct a deBruijn environment with the given variables in scope. e.g. mkDeBruijnEnv [a,b,c] constructs a context forall a b c.

Maps over Maybe values

data MaybeMap m a Source #

Instances

Instances details
TrieMap m => TrieMap (MaybeMap m) # 
Instance details

Defined in TrieMap

Associated Types

type Key (MaybeMap m) Source #

Methods

emptyTM :: MaybeMap m a Source #

lookupTM :: Key (MaybeMap m) -> MaybeMap m b -> Maybe b Source #

alterTM :: Key (MaybeMap m) -> XT b -> MaybeMap m b -> MaybeMap m b Source #

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

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

type Key (MaybeMap m) # 
Instance details

Defined in TrieMap

type Key (MaybeMap m) = Maybe (Key m)

Maps over List values

data ListMap m a Source #

Instances

Instances details
TrieMap m => TrieMap (ListMap m) # 
Instance details

Defined in TrieMap

Associated Types

type Key (ListMap m) Source #

Methods

emptyTM :: ListMap m a Source #

lookupTM :: Key (ListMap m) -> ListMap m b -> Maybe b Source #

alterTM :: Key (ListMap m) -> XT b -> ListMap m b -> ListMap m b Source #

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

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

(TrieMap m, Outputable a) => Outputable (ListMap m a) # 
Instance details

Defined in TrieMap

Methods

ppr :: ListMap m a -> SDoc Source #

pprPrec :: Rational -> ListMap m a -> SDoc Source #

type Key (ListMap m) # 
Instance details

Defined in TrieMap

type Key (ListMap m) = [Key m]

Maps over Literals

Map for compressing leaves. See Note [Compressed TrieMap]

data GenMap m a Source #

Instances

Instances details
(Eq (Key m), TrieMap m) => TrieMap (GenMap m) # 
Instance details

Defined in TrieMap

Associated Types

type Key (GenMap m) Source #

Methods

emptyTM :: GenMap m a Source #

lookupTM :: Key (GenMap m) -> GenMap m b -> Maybe b Source #

alterTM :: Key (GenMap m) -> XT b -> GenMap m b -> GenMap m b Source #

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

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

(Outputable a, Outputable (m a)) => Outputable (GenMap m a) # 
Instance details

Defined in TrieMap

Methods

ppr :: GenMap m a -> SDoc Source #

pprPrec :: Rational -> GenMap m a -> SDoc Source #

type Key (GenMap m) # 
Instance details

Defined in TrieMap

type Key (GenMap m) = Key m

TrieMap class

class TrieMap m where Source #

Associated Types

type Key m :: * Source #

Methods

emptyTM :: m a Source #

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

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

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

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

Instances

Instances details
TrieMap IntMap # 
Instance details

Defined in TrieMap

Associated Types

type Key IntMap Source #

Methods

emptyTM :: IntMap a Source #

lookupTM :: Key IntMap -> IntMap b -> Maybe b Source #

alterTM :: Key IntMap -> XT b -> IntMap b -> IntMap b Source #

mapTM :: (a -> b) -> IntMap a -> IntMap b Source #

foldTM :: (a -> b -> b) -> IntMap a -> b -> b Source #

TrieMap UniqDFM # 
Instance details

Defined in TrieMap

Associated Types

type Key UniqDFM Source #

Methods

emptyTM :: UniqDFM a Source #

lookupTM :: Key UniqDFM -> UniqDFM b -> Maybe b Source #

alterTM :: Key UniqDFM -> XT b -> UniqDFM b -> UniqDFM b Source #

mapTM :: (a -> b) -> UniqDFM a -> UniqDFM b Source #

foldTM :: (a -> b -> b) -> UniqDFM a -> b -> b Source #

TrieMap LabelMap # 
Instance details

Defined in Hoopl.Label

Associated Types

type Key LabelMap Source #

Methods

emptyTM :: LabelMap a Source #

lookupTM :: Key LabelMap -> LabelMap b -> Maybe b Source #

alterTM :: Key LabelMap -> XT b -> LabelMap b -> LabelMap b Source #

mapTM :: (a -> b) -> LabelMap a -> LabelMap b Source #

foldTM :: (a -> b -> b) -> LabelMap a -> b -> b Source #

TrieMap LooseTypeMap # 
Instance details

Defined in CoreMap

Associated Types

type Key LooseTypeMap Source #

TrieMap TypeMap # 
Instance details

Defined in CoreMap

Associated Types

type Key TypeMap Source #

Methods

emptyTM :: TypeMap a Source #

lookupTM :: Key TypeMap -> TypeMap b -> Maybe b Source #

alterTM :: Key TypeMap -> XT b -> TypeMap b -> TypeMap b Source #

mapTM :: (a -> b) -> TypeMap a -> TypeMap b Source #

foldTM :: (a -> b -> b) -> TypeMap a -> b -> b Source #

TrieMap CoreMap # 
Instance details

Defined in CoreMap

Associated Types

type Key CoreMap Source #

Methods

emptyTM :: CoreMap a Source #

lookupTM :: Key CoreMap -> CoreMap b -> Maybe b Source #

alterTM :: Key CoreMap -> XT b -> CoreMap b -> CoreMap b Source #

mapTM :: (a -> b) -> CoreMap a -> CoreMap b Source #

foldTM :: (a -> b -> b) -> CoreMap a -> b -> b Source #

Ord k => TrieMap (Map k) # 
Instance details

Defined in TrieMap

Associated Types

type Key (Map k) Source #

Methods

emptyTM :: Map k a Source #

lookupTM :: Key (Map k) -> Map k b -> Maybe b Source #

alterTM :: Key (Map k) -> XT b -> Map k b -> Map k b Source #

mapTM :: (a -> b) -> Map k a -> Map k b Source #

foldTM :: (a -> b -> b) -> Map k a -> b -> b Source #

(Eq (Key m), TrieMap m) => TrieMap (GenMap m) # 
Instance details

Defined in TrieMap

Associated Types

type Key (GenMap m) Source #

Methods

emptyTM :: GenMap m a Source #

lookupTM :: Key (GenMap m) -> GenMap m b -> Maybe b Source #

alterTM :: Key (GenMap m) -> XT b -> GenMap m b -> GenMap m b Source #

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

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

TrieMap m => TrieMap (ListMap m) # 
Instance details

Defined in TrieMap

Associated Types

type Key (ListMap m) Source #

Methods

emptyTM :: ListMap m a Source #

lookupTM :: Key (ListMap m) -> ListMap m b -> Maybe b Source #

alterTM :: Key (ListMap m) -> XT b -> ListMap m b -> ListMap m b Source #

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

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

TrieMap m => TrieMap (MaybeMap m) # 
Instance details

Defined in TrieMap

Associated Types

type Key (MaybeMap m) Source #

Methods

emptyTM :: MaybeMap m a Source #

lookupTM :: Key (MaybeMap m) -> MaybeMap m b -> Maybe b Source #

alterTM :: Key (MaybeMap m) -> XT b -> MaybeMap m b -> MaybeMap m b Source #

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

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

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

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

xtDFreeVar :: Var -> XT a -> DVarEnv a -> DVarEnv a Source #

xtDNamed :: NamedThing n => n -> XT a -> DNameEnv a -> DNameEnv a Source #

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

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

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