total-map-0.0.7: 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 # 
Instance details

Defined in Data.TotalMap

Methods

(>>=) :: TMap k a -> (a -> TMap k b) -> TMap k b #

(>>) :: TMap k a -> TMap k b -> TMap k b #

return :: a -> TMap k a #

fail :: String -> TMap k a #

Functor (TMap k) Source # 
Instance details

Defined in Data.TotalMap

Methods

fmap :: (a -> b) -> TMap k a -> TMap k b #

(<$) :: a -> TMap k b -> TMap k a #

Ord k => Applicative (TMap k) Source # 
Instance details

Defined in Data.TotalMap

Methods

pure :: a -> TMap k a #

(<*>) :: TMap k (a -> b) -> TMap k a -> TMap k b #

liftA2 :: (a -> b -> c) -> TMap k a -> TMap k b -> TMap k c #

(*>) :: TMap k a -> TMap k b -> TMap k b #

(<*) :: TMap k a -> TMap k b -> TMap k a #

(Ord k, Semigroup v) => Semigroup (TMap k v) Source # 
Instance details

Defined in Data.TotalMap

Methods

(<>) :: TMap k v -> TMap k v -> TMap k v #

sconcat :: NonEmpty (TMap k v) -> TMap k v #

stimes :: Integral b => b -> TMap k v -> TMap k v #

(Ord k, Monoid v) => Monoid (TMap k v) Source # 
Instance details

Defined in Data.TotalMap

Methods

mempty :: TMap k v #

mappend :: TMap k v -> TMap k v -> TMap k v #

mconcat :: [TMap k v] -> TMap k v #

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.