Safe Haskell | None |
---|---|
Language | Haskell98 |
A VarMp maps from variables (tvars, ...) to whatever else has to be mapped to (Ty, ...).
Starting with variant 6 (which introduces kinds) it allows multiple meta level mapping, in that the VarMp holds mappings for multiple meta levels. This allows one map to both map to base level info and to higher levels. In particular this is used by fitsIn which also instantiates types, and types may quantify over type variables with other kinds than kind *, which must be propagated. A separate map could have been used, but this holds the info together and is extendible to more levels.
A multiple level VarMp knows its own absolute metalevel, which is the default to use for lookup.
- data VarMp' k v = VarMp {
- varmpMetaLev :: !MetaLev
- varmpMpL :: [Map k v]
- ppVarMpV :: (PP k, PP v) => VarMp' k v -> PP_Doc
- varmpFilter :: Ord k => (k -> v -> Bool) -> VarMp' k v -> VarMp' k v
- varmpDel :: Ord k => [k] -> VarMp' k v -> VarMp' k v
- (|\>) :: Ord k => VarMp' k v -> [k] -> VarMp' k v
- varmpAlter :: Ord k => (Maybe v -> Maybe v) -> k -> VarMp' k v -> VarMp' k v
- varmpUnion :: Ord k => VarMp' k v -> VarMp' k v -> VarMp' k v
- varmpUnions :: Ord k => [VarMp' k v] -> VarMp' k v
- module UHC.Util.VarLookup
- mkVarMp :: Map k v -> VarMp' k v
- emptyVarMp :: VarMp' k v
- varmpIsEmpty :: VarMp' k v -> Bool
- varmpShiftMetaLev :: MetaLev -> VarMp' k v -> VarMp' k v
- varmpIncMetaLev :: VarMp' k v -> VarMp' k v
- varmpDecMetaLev :: VarMp' k v -> VarMp' k v
- varmpSelectMetaLev :: [MetaLev] -> VarMp' k v -> VarMp' k v
- varmpKeys :: Ord k => VarMp' k v -> [k]
- varmpKeysSet :: Ord k => VarMp' k v -> Set k
- varmpMetaLevSingleton :: MetaLev -> k -> v -> VarMp' k v
- varmpSingleton :: k -> v -> VarMp' k v
- assocMetaLevLToVarMp :: Ord k => AssocL k (MetaLev, v) -> VarMp' k v
- assocLToVarMp :: Ord k => AssocL k v -> VarMp' k v
- varmpToAssocL :: VarMp' k i -> AssocL k i
- varmpPlus :: Ord k => VarMp' k v -> VarMp' k v -> VarMp' k v
- varmpUnionWith :: Ord k => (v -> v -> v) -> VarMp' k v -> VarMp' k v -> VarMp' k v
- varmpLookup :: (VarLookup m k i, Ord k) => k -> m -> Maybe i
- ppVarMp :: (PP k, PP v) => ([PP_Doc] -> PP_Doc) -> VarMp' k v -> PP_Doc
- varmpAsMap :: VarMp' k v -> (Map k v, Map k v -> VarMp' k v)
- varmpMapMaybe :: Ord k => (a -> Maybe b) -> VarMp' k a -> VarMp' k b
- varmpMap :: Ord k => (a -> b) -> VarMp' k a -> VarMp' k b
- varmpInsertWith :: Ord k => (v -> v -> v) -> k -> v -> VarMp' k v -> VarMp' k v
- data VarMpStk' k v
- emptyVarMpStk :: VarMpStk' k v
- varmpstkUnit :: Ord k => k -> v -> VarMpStk' k v
- varmpstkPushEmpty :: VarMpStk' k v -> VarMpStk' k v
- varmpstkPop :: VarMpStk' k v -> (VarMpStk' k v, VarMpStk' k v)
- varmpstkToAssocL :: VarMpStk' k v -> AssocL k v
- varmpstkKeysSet :: Ord k => VarMpStk' k v -> Set k
- varmpstkUnions :: Ord k => [VarMpStk' k v] -> VarMpStk' k v
- varmpSize :: VarMp' k v -> Int
- varmpToMap :: VarMp' k v -> Map k v
Documentation
VarMp | |
|
(Eq k, Eq v) => Eq (VarMp' k v) | |
(Data k, Data v, Ord k) => Data (VarMp' k v) | |
(Ord k, Ord v) => Ord (VarMp' k v) | |
Show (VarMp' k v) | |
(PP k, PP v) => PP (VarMp' k v) | |
(Ord k, Serialize k, Serialize v) => Serialize (VarMp' k v) | |
Typeable (* -> * -> *) VarMp' | |
VarLookupBase (VarMp' k v) k v | |
Ord k => VarLookup (VarMp' k v) k v | |
Ord k => VarLookupCmb (VarMp' k v) (VarMp' k v) |
varmpAlter :: Ord k => (Maybe v -> Maybe v) -> k -> VarMp' k v -> VarMp' k v Source
Alter irrespective of level
varmpUnions :: Ord k => [VarMp' k v] -> VarMp' k v Source
module UHC.Util.VarLookup
emptyVarMp :: VarMp' k v Source
varmpIsEmpty :: VarMp' k v -> Bool Source
varmpShiftMetaLev :: MetaLev -> VarMp' k v -> VarMp' k v Source
varmpIncMetaLev :: VarMp' k v -> VarMp' k v Source
varmpDecMetaLev :: VarMp' k v -> VarMp' k v Source
varmpSelectMetaLev :: [MetaLev] -> VarMp' k v -> VarMp' k v Source
varmpKeysSet :: Ord k => VarMp' k v -> Set k Source
varmpMetaLevSingleton :: MetaLev -> k -> v -> VarMp' k v Source
varmpSingleton :: k -> v -> VarMp' k v Source
assocLToVarMp :: Ord k => AssocL k v -> VarMp' k v Source
varmpToAssocL :: VarMp' k i -> AssocL k i Source
varmpUnionWith :: Ord k => (v -> v -> v) -> VarMp' k v -> VarMp' k v -> VarMp' k v Source
combine by taking the lowest level, adapting the lists with maps accordingly
varmpLookup :: (VarLookup m k i, Ord k) => k -> m -> Maybe i Source
varmpAsMap :: VarMp' k v -> (Map k v, Map k v -> VarMp' k v) Source
Extract first level map, together with a construction function putting a new map into the place of the previous one
varmpInsertWith :: Ord k => (v -> v -> v) -> k -> v -> VarMp' k v -> VarMp' k v Source
emptyVarMpStk :: VarMpStk' k v Source
varmpstkUnit :: Ord k => k -> v -> VarMpStk' k v Source
varmpstkPushEmpty :: VarMpStk' k v -> VarMpStk' k v Source
varmpstkPop :: VarMpStk' k v -> (VarMpStk' k v, VarMpStk' k v) Source
varmpstkToAssocL :: VarMpStk' k v -> AssocL k v Source
varmpstkKeysSet :: Ord k => VarMpStk' k v -> Set k Source
varmpstkUnions :: Ord k => [VarMpStk' k v] -> VarMpStk' k v Source
varmpToMap :: VarMp' k v -> Map k v Source