| syb-0.1.0.1: Scrap Your Boilerplate | Source code | Contents | Index

Data.Generics.Schemes

Portability | non-portable (local universal quantification)
Stability | experimental
Maintainer | generics@haskell.org

Description
"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides frequently used generic traversal schemes.
Synopsis

everywhere :: (forall a. Data a => a -> a) -> forall a. Data a => a -> a
everywhere' :: (forall a. Data a => a -> a) -> forall a. Data a => a -> a
everywhereBut :: GenericQ Bool -> GenericT -> GenericT
everywhereM :: Monad m => GenericM m -> GenericM m
somewhere :: MonadPlus m => GenericM m -> GenericM m
everything :: (r -> r -> r) -> GenericQ r -> GenericQ r
listify :: Typeable r => (r -> Bool) -> GenericQ [r]
something :: GenericQ (Maybe u) -> GenericQ (Maybe u)
synthesize :: s -> (t -> s -> s) -> GenericQ (s -> t) -> GenericQ t
gsize :: Data a => a -> Int
glength :: GenericQ Int
gdepth :: GenericQ Int
gcount :: GenericQ Bool -> GenericQ Int
gnodecount :: GenericQ Int
gtypecount :: Typeable a => a -> GenericQ Int
gfindtype :: (Data x, Typeable y) => x -> Maybe y

Documentation

everywhere :: (forall a. Data a => a -> a) -> forall a. Data a => a -> a | Source

Apply a transformation everywhere in bottom-up manner

everywhere' :: (forall a. Data a => a -> a) -> forall a. Data a => a -> a | Source

Apply a transformation everywhere in top-down manner

everywhereBut :: GenericQ Bool -> GenericT -> GenericT | Source

Variation on everywhere with an extra stop condition

everywhereM :: Monad m => GenericM m -> GenericM m | Source

Monadic variation on everywhere

somewhere :: MonadPlus m => GenericM m -> GenericM m | Source

Apply a monadic transformation at least somewhere

everything :: (r -> r -> r) -> GenericQ r -> GenericQ r | Source

Summarise all nodes in top-down, left-to-right order

listify :: Typeable r => (r -> Bool) -> GenericQ [r] | Source

Get a list of all entities that meet a predicate

something :: GenericQ (Maybe u) -> GenericQ (Maybe u) | Source

Look up a subterm by means of a maybe-typed filter

synthesize :: s -> (t -> s -> s) -> GenericQ (s -> t) -> GenericQ t | Source

Bottom-up synthesis of a data structure; 1st argument z is the initial element for the synthesis; 2nd argument o is for reduction of results from subterms; 3rd argument f updates the synthesised data according to the given term

gsize :: Data a => a -> Int | Source

Compute size of an arbitrary data structure

glength :: GenericQ Int | Source

Count the number of immediate subterms of the given term

gdepth :: GenericQ Int | Source

Determine depth of the given term

gcount :: GenericQ Bool -> GenericQ Int | Source

Determine the number of all suitable nodes in a given term

gnodecount :: GenericQ Int | Source

Determine the number of all nodes in a given term

gtypecount :: Typeable a => a -> GenericQ Int | Source

Determine the number of nodes of a given type in a given term

gfindtype :: (Data x, Typeable y) => x -> Maybe y | Source

Find (unambiguously) an immediate subterm of a given type
Produced by Haddock version 2.4.2