Cardinality: Measure container capacity. Use it to safely change container.
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 offromdon'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 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
Modules
[Index]
Downloads
- Cardinality-0.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1, 0.2 |
|---|---|
| Change log | NEWS |
| Dependencies | base (>=4 && <5), containers, mtl [details] |
| Tested with | ghc ==6.10.4 |
| License | LicenseRef-LGPL |
| Copyright | Copyright (c) 2010 Andrejs Sisojevs |
| Author | Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru> |
| Maintainer | Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru> |
| Category | Data |
| Uploaded | by AndreySisoyev at 2010-01-20T13:19:09Z |
| Distributions | NixOS:0.2 |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Downloads | 2581 total (2 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs uploaded by user Build status unknown [no reports yet] |