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