total-map-0.0.6: Finitely represented /total/ maps

Copyright(c) Conal Elliott 2012
LicenseBSD3
Maintainerconal@conal.net
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell98

Data.TotalMap

Description

Finitely represented total maps. Represented by as a partial map and a default value. Has Applicative and Monad instances (unlike Data.Map).

Synopsis

Documentation

data TMap k v Source

Total map

Instances

Ord k => Monad (TMap k) Source 
Functor (TMap k) Source 
Ord k => Applicative (TMap k) Source 
(Ord k, Monoid v) => Monoid (TMap k v) Source 

fromPartial :: a -> Map k a -> TMap k a Source

Create a total map from a default value and a partial map.

(!) :: Ord k => TMap k v -> k -> v Source

Sample a total map. Semantic function.

tabulate :: Eq k => v -> Set k -> (k -> v) -> TMap k v Source

Construct a total map, given a default value, a set of keys, and a function to sample over that set. You might want to trim the result.

trim :: (Ord k, Eq v) => TMap k v -> TMap k v Source

Optimize a TMap, weeding out any explicit default values. A semantic no-op, i.e., (!) . trim == (!).

intersectionPartialWith :: Ord k => (a -> b -> c) -> TMap k a -> Map k b -> Map k c Source

Intersect a total map with a partial one using an element combinator.

codomain :: Ord v => TMap k v -> Set v Source

Witness the finiteness of the support concretely by giving its image.