Cardinality
Version 0.1 revision 0 uploaded by AndreySisoyev.
Package meta
- Synopsis
- Measure container capacity. Use it to safely change container.
- Description
This module introduces typeclasses
HasCard
= "Has cardinality". In other words, "it's possible to measure current count of elements for this container"HasCardT
= "Has cardinality (for container types of kind(* -> *)
)". In other words, "it's possible to measure current count of elements for this container (for container types of kind(* -> *)
)"HasCardConstr
= "Has cardinality constraint". In other words, "there is a capacity constraint for this container".HasCardConstrT
= "Has cardinality constraint (for container types of kind(* -> *)
)". In other words, "there is a capacity constraint for this container type of kind(* -> *)
".HasCardUCT
= "Has cardinality-unsafe container transform". Define transform that may thow an error, if contents offrom
don't fit into
.HasCardUCT_T
= "Has cardinality-unsafe container transform (for container types of kind(* -> *)
)". Same thing asHasCardUCT
, but for containers of kind(* -> *)
.
No, it's not about playing cards. It's about cardinalities. Wikipedia: "/In mathematics, the cardinality of a set is a measure of the number of elements of the set. For example, the set A = {2, 4, 6} contains 3 elements, and therefore A has a cardinality of 3./" In this package I dare to extend the definition a bit to "C. is a measure of the number of elements in a container"
Usual containers are (together with their cardinality ranges):
Identity a
(1 element)Maybe a
(0..1 element)[a]
(0..inf elements)Map k e
(0..inf elements)
I extended this to the folowing list:
EmptySet a
(0 elements)Identity a
(1 element)Maybe a
(0..1 element)[a]
(0..inf elements)NeverEmptyList a
(1..inf elements)Map k e
(0..inf elements)
Typeclass
HasCardUCT
together with functionsContTrans
(safe container transform) provides a facility to safely change container from one to another keepeng the content. If content doesn't fit to target container,Nothing
is returned. However, when transforming from list[a]
to(Maybe a)
it won't check list length further first 2 elements. The complexity and power of this package is that it provides a facility to lazily evaluate amount of content in the container.- Author
- Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru>
- Bug reports
- n/a
- Category
- Data
- Copyright
- Copyright (c) 2010 Andrejs Sisojevs
- Homepage
- n/a
- Maintainer
- Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru>
- Package URL
- n/a
- Stability
- experimental