Data.Cardinality.ContTrans
- type CardinalityConstraint = CardinalityRange
- cFitsInCC :: LazyCardinality -> CardinalityConstraint -> Bool
- fitsInCC :: HasCard a => a -> CardinalityConstraint -> Bool
- fitsInCC_T :: HasCardT c => c a -> CardinalityConstraint -> Bool
- class HasCardConstr a where
- class HasCardConstrT c where
- cFitsIn :: HasCardConstr b => LazyCardinality -> b -> Bool
- cFitsInT :: HasCardConstrT c => LazyCardinality -> c b -> Bool
- fitsIn :: (HasCard a, HasCardConstr b) => a -> b -> Bool
- fitsInT :: (HasCardT c, HasCardConstrT d) => c a -> d b -> Bool
- class HasCardUCT from to where
- uContTrans :: from -> to
- class HasCardUCT_T from to where
- uContTransT :: from a -> to a
- type TransformError_FromTypeName = String
- type TransformError_ToTypeName = String
- type TransformError_Details = String
- uContError :: TransformError_FromTypeName -> TransformError_ToTypeName -> TransformError_Details -> a
- uContErrorT :: TransformError_FromTypeName -> TransformError_ToTypeName -> TransformError_Details -> a
- sContTrans :: (HasCard from, HasCardConstr to, HasCardUCT from to) => from -> Maybe to
- sContTransT :: (HasCardT from, HasCardConstrT to, HasCardUCT_T from to) => from a -> Maybe (to a)
- type From_LazyCardinality = LazyCardinality
- type To_CardinalityConstraint = CardinalityConstraint
- data ContainerOrder
- data ContTransError = ContTransError From_LazyCardinality Ordering To_CardinalityConstraint ContainerOrder
- sContTrans_E :: (HasCard from, HasCardConstr to, HasCardUCT from to) => from -> Either ContTransError to
- sContTransT_E :: (HasCardT from, HasCardConstrT to, HasCardUCT_T from to) => from a -> Either ContTransError (to a)
type CardinalityConstraint = CardinalityRange
cFitsInCC :: LazyCardinality -> CardinalityConstraint -> BoolSource
cFitsInCC = cFitsInCRDefined to satisfy abbreviation.
fitsInCC :: HasCard a => a -> CardinalityConstraint -> BoolSource
fitsInCC = fitsInCRDefined to satisfy abbreviation.
fitsInCC_T :: HasCardT c => c a -> CardinalityConstraint -> BoolSource
fitsInCC = fitsInCR_TDefined to satisfy abbreviation.
class HasCardConstr a whereSource
HasCardConstr = "Has cardinality constraint". In other words, "there
is a capacity constraint for this container".
Methods
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 (* -> *)".
Methods
cardinalityConstraintOfT :: c a -> CardinalityConstraintSource
cFitsIn :: HasCardConstr b => LazyCardinality -> b -> BoolSource
Wrapper around .
cFitsInCC
cFitsInT :: HasCardConstrT c => LazyCardinality -> c 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 .
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 , but for containers of kind HasCardUCT(* -> *).
Instances
uContError :: TransformError_FromTypeName -> TransformError_ToTypeName -> TransformError_Details -> aSource
This error is used by
typeclass instances in cases when HasCardUCTfrom container's contents
don't fit in to container.
uContErrorT :: TransformError_FromTypeName -> TransformError_ToTypeName -> TransformError_Details -> aSource
Same as , but for use in
uContError typeclass instances
HasCardUCT_T
sContTrans :: (HasCard from, HasCardConstr to, HasCardUCT from to) => from -> Maybe toSource
A wrapper around . 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 uContTransfrom don't
fit in to If instaniated
correctly, then HasCardUCT should never allow
sContTrans to be called by subject instance. It should return uContErrorNothing
instead.
sContTransT :: (HasCardT from, HasCardConstrT to, HasCardUCT_T from to) => from a -> Maybe (to a)Source
A wrapper around . 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 uContTransT(from a) don't
fit in (to a) . If instaniated
correctly, then HasCardUCT_T should never allow
sContTransT to be called by subject instance. It should return uContErrorTNothing
instead.
type From_LazyCardinality = LazyCardinalitySource
Used in .
ContTransError
type To_CardinalityConstraint = CardinalityConstraintSource
Used in .
ContTransError
data ContTransError Source
For container transformation we might use more informative error feedback.
The in the middle is a relation between subject
OrderingFrom_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 . Herre, in case of cardinality error, a more
informative data structure is returned instead of sContTransNothing (as was
in ).
sContTrans
sContTransT_E :: (HasCardT from, HasCardConstrT to, HasCardUCT_T from to) => from a -> Either ContTransError (to a)Source
Analogue to . Herre, in case of cardinality error, a more
informative data structure is returned instead of sContTransTNothing (as was
in ).
sContTransT