definitive-base-2.3: The base modules of the Definitive framework.

Safe HaskellNone
LanguageHaskell2010

Data.Containers

Contents

Synopsis

The basic data class

class Monoid m => DataMap m k a | m -> k a where Source

Methods

at :: k -> Lens' m (Maybe a) Source

Instances

Eq k => DataMap [(k, a)] k a 
Ord a => DataMap (Set a) a Void 
Storable a => DataMap (Slice a) Int a 
Ord k => DataMap (Map k a) k a 
(Ord a, Ord b) => DataMap (Bimap a b) a b 
(Ord k, Ord a) => DataMap (Relation k a) k (Set a) 
(Ord b, Ord a) => DataMap (Flip Bimap b a) b a 

class Indexed f i | f -> i where Source

Methods

keyed :: Iso (f (i, a)) (f (i, b)) (f a) (f b) Source

Instances

Indexed [] Int 
Indexed (Map k) k 

class OrderedMap m k a m' k' a' | m -> k a, m' -> k' a' where Source

Methods

ascList :: Iso [(k, a)] [(k', a')] m m' Source

Instances

Eq b => OrderedMap (Set a) a Void (Set b) b Void 
Eq k' => OrderedMap (Map k a) k a (Map k' a') k' a' 
(Ord a, Ord b, Ord c, Ord d) => OrderedMap (Bimap a b) a b (Bimap c d) c d 

class Container c where Source

Methods

weight :: c a -> Int Source

Instances

lookup :: DataMap m k a => k -> m -> Maybe a Source

resides :: DataMap m k a => k -> m -> Bool Source

member :: DataMap m k Void => k -> Lens' m Bool Source

delete :: DataMap m k a => k -> m -> m Source

touch :: (Monoid a, DataMap m k a) => k -> m -> m Source

insert :: DataMap m k a => k -> a -> m -> m Source

singleton :: DataMap m k a => k -> a -> m Source

singleton' :: (Monoid a, DataMap m k a) => k -> m Source

fromAList :: DataMap m k a => [(k, a)] -> m Source

fromKList :: (Monoid a, DataMap m k a) => [k] -> m Source

(#) :: DataMap m k a => m -> [(k, a)] -> m Source

(#?) :: (Ord a, Ord b) => Relation a b -> [(a, b)] -> Relation a b Source

cached :: forall a b. Ord a => (a -> b) -> a -> b Source

Map instances

Sets and maps

data Set a :: * -> *

A set of values a.

Instances

Foldable Set 
Foldable Set 
Functor Set 
Container Set 
Eq a => Eq (Set a) 
(Data a, Ord a) => Data (Set a) 
Ord a => Ord (Set a) 
(Read a, Ord a) => Read (Set a) 
Show a => Show (Set a) 
Ord a => Monoid (Set a) 
NFData a => NFData (Set a) 
Ord a => Semiring (Set a) 
Ord a => Disjonctive (Set a) 
Ord a => Monoid (Set a) 
Ord a => Semigroup (Set a) 
Ord a => DataMap (Set a) a Void 
Eq b => OrderedMap (Set a) a Void (Set b) b Void 
Typeable (* -> *) Set 
(Ord k, Ord a) => DataMap (Relation k a) k (Set a) 

data Map k a :: * -> * -> *

A Map from keys k to values a.

Instances

Functor (Map k) 
Foldable (Map k) 
Traversable (Map k) 
Ord k => Unit (Zip (Map k)) 
Eq k => Traversable (Map k) 
Foldable (Map k) 
Ord k => Applicative (Zip (Map k)) 
Functor (Map k) 
Container (Map k) 
Indexed (Map k) k 
(Eq k, Eq a) => Eq (Map k a) 
(Data k, Data a, Ord k) => Data (Map k a) 
(Ord k, Ord v) => Ord (Map k v) 
(Ord k, Read k, Read e) => Read (Map k e) 
(Show k, Show a) => Show (Map k a) 
Ord k => Monoid (Map k v) 
(NFData k, NFData a) => NFData (Map k a) 
(Ord k, Semigroup a) => Semiring (Map k a) 
Ord k => Disjonctive (Map k a) 
Ord k => Monoid (Map k a) 
Ord k => Semigroup (Map k a) 
Typeable (* -> * -> *) Map 
Ord k => DataMap (Map k a) k a 
Eq k' => OrderedMap (Map k a) k a (Map k' a') k' a' 

Bimaps

newtype Bimap a b Source

An invertible map

Constructors

Bimap (Map a b, Map b a) 

Instances

Commutative Bimap 
(Show a, Show b) => Show (Bimap a b) 
(Ord a, Ord b, Semigroup a, Semigroup b) => Semiring (Bimap a b) 
(Ord a, Ord b) => Disjonctive (Bimap a b) 
(Ord a, Ord b) => Monoid (Bimap a b) 
(Ord a, Ord b) => Semigroup (Bimap a b) 
(Ord a, Ord b) => DataMap (Bimap a b) a b 
(Ord a, Ord b, Ord c, Ord d) => OrderedMap (Bimap a b) a b (Bimap c d) c d 
(Ord b, Ord a) => DataMap (Flip Bimap b a) b a 

toMap :: Bimap a b -> Map a b Source

keysSet :: (Eq k, OrderedMap m k a m k a) => m -> Set k Source

Relations

newtype Relation a b Source

Constructors

Relation (Map a (Set b), Map b (Set a)) 

Instances

Commutative Relation 
(Eq a, Eq b) => Eq (Relation a b) 
(Ord a, Ord b) => Ord (Relation a b) 
(Show a, Show b) => Show (Relation a b) 
(Ord a, Ord b) => Semiring (Relation a b) 
(Ord a, Ord b) => Monoid (Relation a b) 
(Ord a, Ord b) => Semigroup (Relation a b) 
(Ord k, Ord a) => DataMap (Relation k a) k (Set a) 

i'Relation :: Iso (Relation a b) (Relation c d) (Map a (Set b), Map b (Set a)) (Map c (Set d), Map d (Set c)) Source

i'domains :: (Ord c, Ord d) => Iso (Map b (Set a)) (Map d (Set c)) (Relation a b) (Relation c d) Source

Define a Relation from its domain (uses the Commutative instance)

i'ranges :: (Ord c, Ord d) => Iso (Map a (Set b)) (Map c (Set d)) (Relation a b) (Relation c d) Source

Define a Relation from its ranges. O(1) - O(1,n*ln(n))

l'domain :: (Ord a, Ord b) => a -> Lens' (Relation a b) (Set b) Source

l'range :: (Ord a, Ord b) => b -> Lens' (Relation a b) (Set a) Source

link :: (Ord a, Ord b) => a -> b -> Lens' (Relation a b) Bool Source

(*>>>) :: (Ord a, Ord b, Ord c) => Relation a b -> Relation b c -> Relation a c Source