The Cardinality package
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 of from don't fit in to .
HasCardUCT_T = "Has cardinality-unsafe container transform (for container types of kind (* -> *))". Same thing as HasCardUCT, 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 function sContTrans (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.
To interface package functions
import Data.Cardinality
Properties
| Versions | 0.1, 0.2 |
|---|---|
| Dependencies | base (4.*), containers, mtl |
| License | LGPL |
| Copyright | Copyright (c) 2010 Andrejs Sisojevs |
| Author | Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru> |
| Maintainer | Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru> |
| Stability | experimental |
| Category | Data |
| Upload date | Wed Jan 20 13:19:09 UTC 2010 |
| Uploaded by | AndreySisoyev |
| Built on | ghc-6.12, ghc-7.0 |
Modules
Downloads
- Cardinality-0.2.tar.gz (Cabal source package)
- package description (included in the package)