compdata-0.7.0.1: Compositional Data Types

Portabilitynon-portable (GHC Extensions)
Stabilityexperimental
MaintainerPatrick Bahr <paba@diku.dk>
Safe HaskellSafe-Inferred

Data.Comp.Number

Description

This module provides functionality to number the components of a functorial value with consecutive integers.

Synopsis

Documentation

newtype Numbered a Source

This type is used for numbering components of a functorial value.

Constructors

Numbered (Int, a) 

Instances

Eq (Numbered a) 
Ord (Numbered a) 

number :: Traversable f => f a -> f (Numbered a)Source

This function numbers the components of the given functorial value with consecutive integers starting at 0.

class (Functor t, Foldable t) => Traversable t

Functors representing data structures that can be traversed from left to right.

Minimal complete definition: traverse or sequenceA.

Instances are similar to Functor, e.g. given a data type

 data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)

a suitable instance would be

 instance Traversable Tree where
    traverse f Empty = pure Empty
    traverse f (Leaf x) = Leaf <$> f x
    traverse f (Node l k r) = Node <$> traverse f l <*> f k <*> traverse f r

This is suitable even for abstract types, as the laws for <*> imply a form of associativity.

The superclass instances should satisfy the following:

Instances

Traversable [] 
Traversable Maybe 
Traversable Identity 
Ix i => Traversable (Array i) 
Traversable (Map k) 
Traversable f => Traversable (MaybeT f) 
Traversable f => Traversable (ListT f) 
Traversable f => Traversable (IdentityT f) 
Traversable f => Traversable (ErrorT e f) 
Traversable f => Traversable (WriterT w f) 
Traversable f => Traversable (WriterT w f) 
(Traversable f, Traversable g) => Traversable (Compose f g) 
Traversable f => Traversable (:&: f a) 
(Traversable f, Traversable g) => Traversable (:+: f g) 
Traversable f => Traversable (Cxt h f)