uhc-util-0.1.3.0: UHC utilities

Safe HaskellNone

UHC.Util.VarLookup

Synopsis

Documentation

class VarLookup m k v whereSource

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.

Methods

varlookupWithMetaLev :: MetaLev -> k -> m -> Maybe vSource

varlookup :: k -> m -> Maybe vSource

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 resSource

type VarLookupFix k v = k -> Maybe vSource

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

fix looking up to be for a certain var mapping

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

simulate deletion

class VarLookupCmb m1 m2 whereSource

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 -> m2Source

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 whereSource

Instances

VarLookupBase (VarMp' k v) k v 

type VarLookupCmbFix m1 m2 = m1 -> m2 -> m2Source

varlookupcmbFix :: VarLookupCmb m1 m2 => VarLookupCmbFix m1 m2Source

fix combining up to be for a certain var mapping

type MetaLev = IntSource

Level to lookup into

metaLevVal :: MetaLevSource

Base level (of values, usually)