total-maps-1.0.0.1: Dense and sparse total maps.

LicenseMIT
MaintainerPaweł Nowak <pawel834@gmail.com>
Stabilityprovisional
Portabilityportable
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Total.Map.Subset

Description

Dense, total, maps parametrized by a set of keys.

Synopsis

Documentation

type Subset s k = Reifies s (Set k) Source

Subset s k means that s reifies a subset of k.

newtype TotalSubsetMap s k a Source

A total map from a subset s of keys k to values a, e.g. a restriction of a partial function k -> a to a subset of its domain on which the function is defined.

Most functions are derived from Map.

n is equal to the size of the key set.

Constructors

TotalSubsetMap (Map k a) 

Instances

Functor (TotalSubsetMap s k) 
(Ord k, Subset s k) => Applicative (TotalSubsetMap s k)

Zippy applicative. Complexity: pure O(n), <*> O(n).

Foldable (TotalSubsetMap s k) 
Traversable (TotalSubsetMap s k) 
(Ord k, Subset s k) => Distributive (TotalSubsetMap s k)

Complexity: distribute O(n * fmap)

(Ord k, Subset s k) => Representable (TotalSubsetMap s k)

Convert from and to a partial function that would be total if restricted to s.

Complexity: tabulate O(n), index O(log n)

(Ord k, Subset s k) => Serial1 (TotalSubsetMap s k)

Complexity: serializeWith O(n), deserializeWith O(n * log n)

Keyed (TotalSubsetMap s k) 
Ord k => Zip (TotalSubsetMap s k) 
Ord k => ZipWithKey (TotalSubsetMap s k) 
Ord k => Indexable (TotalSubsetMap s k) 
Ord k => Lookup (TotalSubsetMap s k) 
Ord k => Adjustable (TotalSubsetMap s k) 
Ord k => FoldableWithKey (TotalSubsetMap s k) 
Ord k => TraversableWithKey (TotalSubsetMap s k)

Complexity: traverseWithKey O(n)

(Ord k, Subset s k) => Metric (TotalSubsetMap s k)

Complexity: all O(n)

(Ord k, Subset s k) => Additive (TotalSubsetMap s k)

Complexity: all O(n)

(Eq k, Eq a) => Eq (TotalSubsetMap s k a) 
(Ord k, Ord a) => Ord (TotalSubsetMap s k a) 
(Ord k, Read k, Read a) => Read (TotalSubsetMap s k a) 
(Show k, Show a) => Show (TotalSubsetMap s k a) 
(Ord k, Subset s k, Serial a) => Serial (TotalSubsetMap s k a)

Complexity: serialize O(n), deserialize O(n * log n)

type Rep (TotalSubsetMap s k) = k 
type Key (TotalSubsetMap s k) = k 

restrict :: forall k a r. Map k a -> (forall s. Subset s k => TotalSubsetMap s k a -> r) -> r Source

Restrict a partial map to a total map.

Complexity: O(n)