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

Safe HaskellNone

Data.Containers

Contents

Synopsis

The basic data class

class Monoid m => DataMap m k a | m -> k a whereSource

Methods

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

Instances

Eq k => DataMap [(k, a)] k a 
Ord a => DataMap (Set a) a Void 
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 whereSource

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' whereSource

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 whereSource

Methods

weight :: c a -> IntSource

Instances

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

present :: DataMap m k a => k -> m -> BoolSource

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

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

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

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

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

fromList :: DataMap m k a => [(k, a)] -> mSource

fromList' :: (Monoid a, DataMap m k a) => [k] -> mSource

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

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

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

Map instances

Sets and maps

data Set a

A set of values a.

Instances

Typeable1 Set 
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 
(Ord k, Ord a) => DataMap (Relation k a) k (Set a) 

data Map k a

A Map from keys k to values a.

Instances

Typeable2 Map 
Functor (Map k) 
Foldable (Map k) 
Traversable (Map k) 
Eq k => Traversable (Map k) 
Foldable (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) 
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 bSource

keysSet :: (Eq a, Eq b) => Iso (Set a) (Set b) (Map a Void) (Map b Void)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) 

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)

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))

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

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