|
Control.Concurrent.Session.Map |
|
|
Description |
Heterogeneous maps at the type level. Obviously equality is done
on types and not values and I also don't actually check that a key
doesn't already exist - i.e. every time you insert the same key,
the map changes. So not really a map after all...
|
|
Synopsis |
|
data TyMap keyToIdx idxToValue | | emptyMap :: TyMap Nil Nil | | class MapInsert m1 key val m2 | m1 key val -> m2 where | | | class MapLookup mp key val | mp key -> val where | | | class MapUpdate mp key val' mp' | mp key val' -> mp' where | | | class MapWith mp key val val' mp' | mp key -> val, mp key val' -> mp' where | | | class MapSize mp size | mp -> size where | |
|
|
Documentation |
|
data TyMap keyToIdx idxToValue | Source |
|
Instances | (Show keyToIdx, Show idxToValue) => Show (TyMap keyToIdx idxToValue) | TyListLength keyToIdx len => MapSize (TyMap keyToIdx idxToValue) len | (TyListElem keyToIdx key idx, TyListIndex idxToValue idx val) => MapLookup (TyMap keyToIdx idxToValue) key val | (TyListUpdateVar idxToValue idx val' idxToValue', TyListElem keyToIdx key idx, TyListIndex idxToValue idx val, MapLookup (TyMap keyToIdx idxToValue) key val, MapLookup (TyMap keyToIdx idxToValue') key val') => MapWith (TyMap keyToIdx idxToValue) key val val' (TyMap keyToIdx idxToValue') | (TyListUpdateVar idxToValue idx val' idxToValue', TyListElem keyToIdx key idx, MapLookup (TyMap keyToIdx idxToValue') key val') => MapUpdate (TyMap keyToIdx idxToValue) key val' (TyMap keyToIdx idxToValue') | (TyListLength keyToIdx newIdx, TyListReverse keyToIdx keyToIdxRev, TyListReverse (Cons key keyToIdxRev) keyToIdx', TyListUpdateVar idxToValue newIdx value idxToValue', TyList keyToIdxRev) => MapInsert (TyMap keyToIdx idxToValue) key value (TyMap keyToIdx' idxToValue') |
|
|
|
|
|
class MapInsert m1 key val m2 | m1 key val -> m2 where | Source |
|
Insert into a map. Remember, the values are irrelevant, it's only
the types that matter.
| | Methods | mapInsert :: key -> val -> m1 -> m2 | Source |
|
| | Instances | |
|
|
class MapLookup mp key val | mp key -> val where | Source |
|
Lookup in a map. Will call fail in Monad if it's not there.
| | Methods | | | Instances | |
|
|
class MapUpdate mp key val' mp' | mp key val' -> mp' where | Source |
|
Update a map. The key must already be in the map. The value is
the type of the value, if you see what I mean and so obviously,
updating the map means changing the type of the value.
| | Methods | mapUpdate :: Monad m => mp -> key -> val' -> m mp' | Source |
|
| | Instances | |
|
|
class MapWith mp key val val' mp' | mp key -> val, mp key val' -> mp' where | Source |
|
A helper class - the ability to modify a value in the map and
immediately update the map.
| | Methods | mapWith :: Monad m => mp -> key -> (val -> m val') -> m mp' | Source |
|
| | Instances | |
|
|
class MapSize mp size | mp -> size where | Source |
|
Find the size of a map.
| | Methods | | | Instances | |
|
|
Produced by Haddock version 2.3.0 |