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

LicenseMIT
MaintainerPaweł Nowak <pawel834@gmail.com>
PortabilityGHC only
Safe HaskellNone
LanguageHaskell2010

Data.Total.Array.Subset

Description

Subset, dense, total map implemented as a vector.

Synopsis

Documentation

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

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

newtype TotalSubsetArray 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. Implemented as a vector.

n is equal to the number of keys.

Constructors

TotalSubsetArray (Vector a) 

Instances

Functor (TotalSubsetArray s k) Source # 

Methods

fmap :: (a -> b) -> TotalSubsetArray s k a -> TotalSubsetArray s k b #

(<$) :: a -> TotalSubsetArray s k b -> TotalSubsetArray s k a #

Subset s k => Applicative (TotalSubsetArray s k) Source #

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

Methods

pure :: a -> TotalSubsetArray s k a #

(<*>) :: TotalSubsetArray s k (a -> b) -> TotalSubsetArray s k a -> TotalSubsetArray s k b #

(*>) :: TotalSubsetArray s k a -> TotalSubsetArray s k b -> TotalSubsetArray s k b #

(<*) :: TotalSubsetArray s k a -> TotalSubsetArray s k b -> TotalSubsetArray s k a #

Foldable (TotalSubsetArray s k) Source # 

Methods

fold :: Monoid m => TotalSubsetArray s k m -> m #

foldMap :: Monoid m => (a -> m) -> TotalSubsetArray s k a -> m #

foldr :: (a -> b -> b) -> b -> TotalSubsetArray s k a -> b #

foldr' :: (a -> b -> b) -> b -> TotalSubsetArray s k a -> b #

foldl :: (b -> a -> b) -> b -> TotalSubsetArray s k a -> b #

foldl' :: (b -> a -> b) -> b -> TotalSubsetArray s k a -> b #

foldr1 :: (a -> a -> a) -> TotalSubsetArray s k a -> a #

foldl1 :: (a -> a -> a) -> TotalSubsetArray s k a -> a #

toList :: TotalSubsetArray s k a -> [a] #

null :: TotalSubsetArray s k a -> Bool #

length :: TotalSubsetArray s k a -> Int #

elem :: Eq a => a -> TotalSubsetArray s k a -> Bool #

maximum :: Ord a => TotalSubsetArray s k a -> a #

minimum :: Ord a => TotalSubsetArray s k a -> a #

sum :: Num a => TotalSubsetArray s k a -> a #

product :: Num a => TotalSubsetArray s k a -> a #

Traversable (TotalSubsetArray s k) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> TotalSubsetArray s k a -> f (TotalSubsetArray s k b) #

sequenceA :: Applicative f => TotalSubsetArray s k (f a) -> f (TotalSubsetArray s k a) #

mapM :: Monad m => (a -> m b) -> TotalSubsetArray s k a -> m (TotalSubsetArray s k b) #

sequence :: Monad m => TotalSubsetArray s k (m a) -> m (TotalSubsetArray s k a) #

Subset s k => Distributive (TotalSubsetArray s k) Source #

Complexity: distribute O(n * fmap)

Methods

distribute :: Functor f => f (TotalSubsetArray s k a) -> TotalSubsetArray s k (f a) #

collect :: Functor f => (a -> TotalSubsetArray s k b) -> f a -> TotalSubsetArray s k (f b) #

distributeM :: Monad m => m (TotalSubsetArray s k a) -> TotalSubsetArray s k (m a) #

collectM :: Monad m => (a -> TotalSubsetArray s k b) -> m a -> TotalSubsetArray s k (m b) #

(Ord k, Subset s k) => Representable (TotalSubsetArray s k) Source #

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

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

Associated Types

type Rep (TotalSubsetArray s k :: * -> *) :: * #

Methods

tabulate :: (Rep (TotalSubsetArray s k) -> a) -> TotalSubsetArray s k a #

index :: TotalSubsetArray s k a -> Rep (TotalSubsetArray s k) -> a #

Subset s k => Serial1 (TotalSubsetArray s k) Source #

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

Methods

serializeWith :: MonadPut m => (a -> m ()) -> TotalSubsetArray s k a -> m () #

deserializeWith :: MonadGet m => m a -> m (TotalSubsetArray s k a) #

Subset s k => Keyed (TotalSubsetArray s k) Source #

Complexity: mapWithKey O(n)

Methods

mapWithKey :: (Key (TotalSubsetArray s k) -> a -> b) -> TotalSubsetArray s k a -> TotalSubsetArray s k b #

Zip (TotalSubsetArray s k) Source #

Complexity: all O(n)

Methods

zipWith :: (a -> b -> c) -> TotalSubsetArray s k a -> TotalSubsetArray s k b -> TotalSubsetArray s k c #

zip :: TotalSubsetArray s k a -> TotalSubsetArray s k b -> TotalSubsetArray s k (a, b) #

zap :: TotalSubsetArray s k (a -> b) -> TotalSubsetArray s k a -> TotalSubsetArray s k b #

Subset s k => ZipWithKey (TotalSubsetArray s k) Source #

Complexity: all O(n)

Methods

zipWithKey :: (Key (TotalSubsetArray s k) -> a -> b -> c) -> TotalSubsetArray s k a -> TotalSubsetArray s k b -> TotalSubsetArray s k c #

zapWithKey :: TotalSubsetArray s k (Key (TotalSubsetArray s k) -> a -> b) -> TotalSubsetArray s k a -> TotalSubsetArray s k b #

(Ord k, Subset s k) => Indexable (TotalSubsetArray s k) Source #

Complexity: index O(log n)

Methods

index :: TotalSubsetArray s k a -> Key (TotalSubsetArray s k) -> a #

(Ord k, Subset s k) => Lookup (TotalSubsetArray s k) Source #

Complexity: lookup O(log n)

Methods

lookup :: Key (TotalSubsetArray s k) -> TotalSubsetArray s k a -> Maybe a #

(Ord k, Subset s k) => Adjustable (TotalSubsetArray s k) Source #

Complexity: adjust O(n)

Methods

adjust :: (a -> a) -> Key (TotalSubsetArray s k) -> TotalSubsetArray s k a -> TotalSubsetArray s k a #

replace :: Key (TotalSubsetArray s k) -> a -> TotalSubsetArray s k a -> TotalSubsetArray s k a #

Subset s k => FoldableWithKey (TotalSubsetArray s k) Source #

Complexity: foldMapWithKey O(n)

Methods

toKeyedList :: TotalSubsetArray s k a -> [(Key (TotalSubsetArray s k), a)] #

foldMapWithKey :: Monoid m => (Key (TotalSubsetArray s k) -> a -> m) -> TotalSubsetArray s k a -> m #

foldrWithKey :: (Key (TotalSubsetArray s k) -> a -> b -> b) -> b -> TotalSubsetArray s k a -> b #

foldlWithKey :: (b -> Key (TotalSubsetArray s k) -> a -> b) -> b -> TotalSubsetArray s k a -> b #

Subset s k => TraversableWithKey (TotalSubsetArray s k) Source #

Complexity: traverseWithKey O(n)

Methods

traverseWithKey :: Applicative f => (Key (TotalSubsetArray s k) -> a -> f b) -> TotalSubsetArray s k a -> f (TotalSubsetArray s k b) #

mapWithKeyM :: Monad m => (Key (TotalSubsetArray s k) -> a -> m b) -> TotalSubsetArray s k a -> m (TotalSubsetArray s k b) #

Subset s k => Metric (TotalSubsetArray s k) Source #

Complexity: all O(n)

Methods

dot :: Num a => TotalSubsetArray s k a -> TotalSubsetArray s k a -> a #

quadrance :: Num a => TotalSubsetArray s k a -> a #

qd :: Num a => TotalSubsetArray s k a -> TotalSubsetArray s k a -> a #

distance :: Floating a => TotalSubsetArray s k a -> TotalSubsetArray s k a -> a #

norm :: Floating a => TotalSubsetArray s k a -> a #

signorm :: Floating a => TotalSubsetArray s k a -> TotalSubsetArray s k a #

Subset s k => Additive (TotalSubsetArray s k) Source #

Complexity: all O(n)

Methods

zero :: Num a => TotalSubsetArray s k a #

(^+^) :: Num a => TotalSubsetArray s k a -> TotalSubsetArray s k a -> TotalSubsetArray s k a #

(^-^) :: Num a => TotalSubsetArray s k a -> TotalSubsetArray s k a -> TotalSubsetArray s k a #

lerp :: Num a => a -> TotalSubsetArray s k a -> TotalSubsetArray s k a -> TotalSubsetArray s k a #

liftU2 :: (a -> a -> a) -> TotalSubsetArray s k a -> TotalSubsetArray s k a -> TotalSubsetArray s k a #

liftI2 :: (a -> b -> c) -> TotalSubsetArray s k a -> TotalSubsetArray s k b -> TotalSubsetArray s k c #

Eq a => Eq (TotalSubsetArray s k a) Source # 

Methods

(==) :: TotalSubsetArray s k a -> TotalSubsetArray s k a -> Bool #

(/=) :: TotalSubsetArray s k a -> TotalSubsetArray s k a -> Bool #

Ord a => Ord (TotalSubsetArray s k a) Source # 
Read a => Read (TotalSubsetArray s k a) Source # 
Show a => Show (TotalSubsetArray s k a) Source # 
(Subset s k, Serial a) => Serial (TotalSubsetArray s k a) Source #

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

Methods

serialize :: MonadPut m => TotalSubsetArray s k a -> m () #

deserialize :: MonadGet m => m (TotalSubsetArray s k a) #

type Rep (TotalSubsetArray s k) Source # 
type Rep (TotalSubsetArray s k) = k
type Key (TotalSubsetArray s k) Source # 
type Key (TotalSubsetArray s k) = k