Cardinality-0.2: Measure container capacity. Use it to safely change container.

Data.Cardinality.ContTrans

Contents

Synopsis

type CardinalityConstraint = CardinalityRange

cFitsInCC :: LazyCardinality -> CardinalityConstraint -> BoolSource

cFitsInCC = cFitsInCR

Defined to satisfy abbreviation.

fitsInCC :: HasCard a => a -> CardinalityConstraint -> BoolSource

fitsInCC = fitsInCR

Defined to satisfy abbreviation.

fitsInCC_T :: HasCardT c => c a -> CardinalityConstraint -> BoolSource

fitsInCC = fitsInCR_T

Defined to satisfy abbreviation.

class HasCardConstr a whereSource

HasCardConstr = "Has cardinality constraint". In other words, "there is a capacity constraint for this container".

Instances

HasCardConstr () 
HasCardConstr [a] 
HasCardConstr (Maybe a) 
HasCardConstr (Identity a) 
HasCardConstr (NeverEmptyList a) 
HasCardConstr (EmptySet a) 
HasCardConstr (a, a) 
HasCardConstr (Map k e) 
HasCardConstr (a, a, a) 
HasCardConstr (a, a, a, a) 
HasCardConstr (a, a, a, a, a) 
HasCardConstr (a, a, a, a, a, a) 
HasCardConstr (a, a, a, a, a, a, a) 
HasCardConstr (a, a, a, a, a, a, a, a) 
HasCardConstr (a, a, a, a, a, a, a, a, a) 
HasCardConstr (a, a, a, a, a, a, a, a, a, a) 
HasCardConstr (a, a, a, a, a, a, a, a, a, a, a) 

class HasCardConstrT c whereSource

HasCardConstrT = "Has cardinality constraint (for container types of kind (* -> *))". In other words, "there is a capacity constraint for this container type of kind (* -> *)".

cFitsIn :: HasCardConstr b => LazyCardinality -> b -> BoolSource

Wrapper around cFitsInCC.

cFitsInT :: HasCardConstrT c => LazyCardinality -> c b -> BoolSource

Wrapper around cFitsInCC.

fitsIn :: (HasCard a, HasCardConstr b) => a -> b -> BoolSource

Wrapper around cFitsInCC.

fitsInT :: (HasCardT c, HasCardConstrT d) => c a -> d b -> BoolSource

Wrapper around cFitsInCC.

Container transformation

class HasCardUCT from to whereSource

HasCardUCT = "Has cardinality-unsafe container transform". Define transform that may thow an error, if contents of from don't fit in to .

Methods

uContTrans :: from -> toSource

"u-" prefix stands for "unsafe-"

Instances

HasCardUCT () [a] 
HasCardUCT () (Maybe a) 
HasCardUCT () (EmptySet a) 
HasCardUCT () (Map k e) 
HasCardUCT [a] () 
HasCardUCT (Maybe a) () 
HasCardUCT (EmptySet a) () 
HasCardUCT [a] (NeverEmptyList a) 
HasCardUCT [a] (Maybe a) 
HasCardUCT [a] (Identity a) 
HasCardUCT [a] (EmptySet a) 
HasCardUCT (Maybe a) (NeverEmptyList a) 
HasCardUCT (Maybe a) [a] 
HasCardUCT (Maybe a) (Identity a) 
HasCardUCT (Maybe a) (EmptySet a) 
HasCardUCT (Identity a) (NeverEmptyList a) 
HasCardUCT (Identity a) [a] 
HasCardUCT (Identity a) (Maybe a) 
HasCardUCT (NeverEmptyList a) [a] 
HasCardUCT (NeverEmptyList a) (Maybe a) 
HasCardUCT (NeverEmptyList a) (Identity a) 
HasCardUCT (EmptySet a) [a] 
HasCardUCT (EmptySet a) (Maybe a) 
Ord k => HasCardUCT [(k, e)] (Map k e) 
HasCardUCT [a] (a, a) 
HasCardUCT (Maybe (k, e)) (Map k e) 
HasCardUCT (Identity (k, e)) (Map k e) 
Ord k => HasCardUCT (NeverEmptyList (k, e)) (Map k e) 
HasCardUCT (EmptySet (k, e)) (Map k e) 
HasCardUCT [a] (a, a, a) 
HasCardUCT [a] (a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a, a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a, a, a, a, a, a) 
HasCardUCT [a] (a, a, a, a, a, a, a, a, a, a, a) 
HasCardUCT (Map k e) () 
HasCardUCT (a, a) [a] 
HasCardUCT (Map k e) (NeverEmptyList (k, e)) 
HasCardUCT (Map k e) [(k, e)] 
HasCardUCT (Map k e) (Maybe (k, e)) 
HasCardUCT (Map k e) (Identity (k, e)) 
HasCardUCT (Map k e) (EmptySet (k, e)) 
HasCardUCT (k, e) (Map k e) 
HasCardUCT (Map k e) (k, e) 
HasCardUCT (a, a, a) [a] 
HasCardUCT (a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a, a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a, a, a, a, a, a) [a] 
HasCardUCT (a, a, a, a, a, a, a, a, a, a, a) [a] 

class HasCardUCT_T from to whereSource

HasCardUCT_T = "Has cardinality-unsafe container transform (for container types of kind (* -> *))". Same thing as HasCardUCT, but for containers of kind (* -> *).

Methods

uContTransT :: from a -> to aSource

"u-" prefix stands for "unsafe-"

uContError :: TransformError_FromTypeName -> TransformError_ToTypeName -> TransformError_Details -> aSource

This error is used by HasCardUCT typeclass instances in cases when from container's contents don't fit in to container.

sContTrans :: (HasCard from, HasCardConstr to, HasCardUCT from to) => from -> Maybe toSource

A wrapper around uContTrans. Contrary to it, where "u-" prefix stands for "unsafe-", here "s-" prefix stands for "safe-". This is aimed to localize and exclude case, when contents of from don't fit in to If HasCardUCT instaniated correctly, then sContTrans should never allow uContError to be called by subject instance. It should return Nothing instead.

sContTransT :: (HasCardT from, HasCardConstrT to, HasCardUCT_T from to) => from a -> Maybe (to a)Source

A wrapper around uContTransT. Contrary to it, where "u-" prefix stands for "unsafe-", here "s-" prefix stands for "safe-". This is aimed to localize and exclude case, when contents of (from a) don't fit in (to a) . If HasCardUCT_T instaniated correctly, then sContTransT should never allow uContErrorT to be called by subject instance. It should return Nothing instead.

data ContainerOrder Source

Used in ContTransError. The kind of container.

data ContTransError Source

For container transformation we might use more informative error feedback. The Ordering in the middle is a relation between subject From_LazyCardinality and To_CardinalityConstraint. It's never EQ (and that's the reason for the error).

Instances

sContTrans_E :: (HasCard from, HasCardConstr to, HasCardUCT from to) => from -> Either ContTransError toSource

Analogue to sContTrans. Herre, in case of cardinality error, a more informative data structure is returned instead of Nothing (as was in sContTrans).

sContTransT_E :: (HasCardT from, HasCardConstrT to, HasCardUCT_T from to) => from a -> Either ContTransError (to a)Source

Analogue to sContTransT. Herre, in case of cardinality error, a more informative data structure is returned instead of Nothing (as was in sContTransT).