- 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 = 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".
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
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
.
uContTrans :: from -> toSource
"u-" prefix stands for "unsafe-"
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
(* -> *)
.
uContTransT :: from a -> to aSource
"u-" prefix stands for "unsafe-"
uContError :: TransformError_FromTypeName -> TransformError_ToTypeName -> TransformError_Details -> aSource
This error is used by
typeclass instances in cases when HasCardUCT
from
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 uContTrans
from
don't
fit in to
If
instaniated
correctly, then HasCardUCT
should never allow
sContTrans
to be called by subject instance. It should return uContError
Nothing
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 uContErrorT
Nothing
instead.
type From_LazyCardinality = LazyCardinalitySource
Used in
.
ContTransError
type To_CardinalityConstraint = CardinalityConstraintSource
Used in
.
ContTransError
data ContainerOrder Source
Used in
. The kind of container.
ContTransError
data ContTransError Source
For container transformation we might use more informative error feedback.
The
in the middle is a relation between subject
Ordering
From_LazyCardinality
and To_CardinalityConstraint
. It's never EQ (and
that's the reason for the error).
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 sContTrans
Nothing
(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 sContTransT
Nothing
(as was
in
).
sContTransT