packages feed

Cardinality-0.2: Cardinality.cabal

Name: Cardinality
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 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@
Version: 0.2
Copyright: Copyright (c) 2010 Andrejs Sisojevs
License: LGPL
License-File: COPYRIGHT
Author: Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru>
Maintainer: Andrejs Sisojevs <andrejs.sisojevs@nextmail.ru>
Stability: experimental
Category: Data
Tested-With: GHC == 6.10.4
Cabal-Version: >= 1.6
Build-Type: Simple

Extra-Source-Files:
    COPYRIGHT
    COPYING
    NEWS
    doinst.sh
    examples/CardinalityRangeCompareTest.hs
    examples/ContainerTransformsTests.hs
    examples/HelloWorld.hs
Library
    Build-Depends:
        base >= 4 && < 5, containers, mtl
    Exposed-Modules:
        Data.Cardinality.Cardinality
        Data.Cardinality.CardinalityRange
        Data.Cardinality.ContTrans
        Data.Cardinality
        Data.EmptySet
        Data.Intersectable
        Data.NeverEmptyList
    Extensions:
        DeriveDataTypeable