uhc-util-0.1.5.2: UHC utilities

Safe HaskellNone
LanguageHaskell98

UHC.Util.VarLookup

Synopsis

Documentation

class VarLookup m k v where Source

VarLookup abstracts from a Map. The purpose is to be able to combine maps only for the purpose of searching without actually merging the maps. This then avoids the later need to unmerge such mergings. The class interface serves to hide this.

Minimal complete definition

varlookupWithMetaLev

Methods

varlookupWithMetaLev :: MetaLev -> k -> m -> Maybe v Source

varlookup :: k -> m -> Maybe v Source

Instances

VarLookup m k v => VarLookup [m] k v 
(VarLookup m1 k v, VarLookup m2 k v) => VarLookup (m1, m2) k v 
Ord k => VarLookup (VarMpStk' k v) k v 
Ord k => VarLookup (VarMp' k v) k v 

varlookupMap :: VarLookup m k v => (v -> Maybe res) -> k -> m -> Maybe res Source

type VarLookupFix k v = k -> Maybe v Source

varlookupFix :: VarLookup m k v => m -> VarLookupFix k v Source

fix looking up to be for a certain var mapping

varlookupFixDel :: Ord k => [k] -> VarLookupFix k v -> VarLookupFix k v Source

simulate deletion

class VarLookupCmb m1 m2 where Source

VarLookupCmb abstracts the combining of/from a substitution. The interface goes along with VarLookup but is split off to avoid functional dependency restrictions. The purpose is to be able to combine maps only for the purpose of searching without actually merging the maps. This then avoids the later need to unmerge such mergings.

Methods

(|+>) :: m1 -> m2 -> m2 infixr 7 Source

Instances

VarLookupCmb m1 m2 => VarLookupCmb m1 [m2] 
(VarLookupCmb m1 m1, VarLookupCmb m1 m2) => VarLookupCmb [m1] [m2] 
Ord k => VarLookupCmb (VarMpStk' k v) (VarMpStk' k v) 
Ord k => VarLookupCmb (VarMp' k v) (VarMp' k v) 

class VarLookupBase m k v | m -> k v where Source

Instances

VarLookupBase (VarMp' k v) k v 

type VarLookupCmbFix m1 m2 = m1 -> m2 -> m2 Source

varlookupcmbFix :: VarLookupCmb m1 m2 => VarLookupCmbFix m1 m2 Source

fix combining up to be for a certain var mapping

type MetaLev = Int Source

Level to lookup into

metaLevVal :: MetaLev Source

Base level (of values, usually)