testing-feat-0.3: Functional Enumeration of Abstract Types

Test.Feat.Enumerate

Description

Basic combinators for building enumerations most users will want to use the type class based combinators in Test.Feat.Class instead.

Synopsis

# Documentation

data Enumerate a Source

A functional enumeration of type `t` is a partition of `t` into finite numbered sets called Parts. Each parts contains values of a certain cost (typically the size of the value).

Constructors

 Enumerate FieldsrevParts :: RevList (Finite a) optimiser :: Sharing Tag (Enumerate a)

Instances

 Functor Enumerate Only use fmap with bijective functions (e.g. data constructors) Typeable1 Enumerate Applicative Enumerate Pure is `singleton` and `<*>` corresponds to cartesian product (as with lists) Monoid (Enumerate a) The `mappend` is (disjoint) `union`

## Reversed lists

data RevList a Source

A data structure that contains a list and the reversals of all initial segments of the list. Intuitively

`reversals xs !! n = reverse (take (n+1) (fromRev xs))`

Any operation on a `RevList` typically discards the reversals and constructs new reversals on demand.

Constructors

 RevList FieldsfromRev :: [a] reversals :: [[a]]

Instances

 Functor RevList Show a => Show (RevList a) Monoid a => Monoid (RevList a) Padded zip

toRev :: [a] -> RevList aSource

Constructs a reversable variant of a given list. In a sensible Haskell implementation evaluating any inital segment of `reversals (toRevxs)` uses linear memory in the size of the segment.

## Finite ordered sets

data Finite a Source

Constructors

 Finite FieldsfCard :: Index fIndex :: Index -> a

Instances

 Functor Finite Show a => Show (Finite a) Monoid (Finite a)

## Combinators for building enumerations

singleton :: a -> Enumerate aSource

The definition of `pure` for the applicative instance.

pay :: Enumerate a -> Enumerate aSource

Increases the cost of all values in an enumeration by one.

### Polymorphic sharing

data Tag Source

Constructors

 Source String String Int Int

Instances

 Eq Tag Ord Tag Show Tag