|
| Data.Generics.Schemes | | Portability | non-portable (local universal quantification) | | Stability | experimental | | Maintainer | libraries@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 |
|
|
|
| Documentation |
|
| everywhere :: (forall a . Data a => a -> a) -> forall a . Data a => a -> a |
| Apply a transformation everywhere in bottom-up manner
|
|
| everywhere' :: (forall a . Data a => a -> a) -> forall a . Data a => a -> a |
| Apply a transformation everywhere in top-down manner
|
|
| everywhereBut :: GenericQ Bool -> GenericT -> GenericT |
| Variation on everywhere with an extra stop condition
|
|
| everywhereM :: Monad m => GenericM m -> GenericM m |
| Monadic variation on everywhere
|
|
| somewhere :: MonadPlus m => GenericM m -> GenericM m |
| Apply a monadic transformation at least somewhere
|
|
| everything :: (r -> r -> r) -> GenericQ r -> GenericQ r |
| Summarise all nodes in top-down, left-to-right order
|
|
| listify :: Typeable r => (r -> Bool) -> GenericQ [r] |
| Get a list of all entities that meet a predicate
|
|
| something :: GenericQ (Maybe u) -> GenericQ (Maybe u) |
| Look up a subterm by means of a maybe-typed filter
|
|
| synthesize :: s -> (s -> s -> s) -> GenericQ (s -> s) -> GenericQ s |
| 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 |
| Compute size of an arbitrary data structure
|
|
| glength :: GenericQ Int |
| Count the number of immediate subterms of the given term
|
|
| gdepth :: GenericQ Int |
| Determine depth of the given term
|
|
| gcount :: GenericQ Bool -> GenericQ Int |
| Determine the number of all suitable nodes in a given term
|
|
| gnodecount :: GenericQ Int |
| Determine the number of all nodes in a given term
|
|
| gtypecount :: Typeable a => a -> GenericQ Int |
| Determine the number of nodes of a given type in a given term
|
|
| gfindtype :: (Data x, Typeable y) => x -> Maybe y |
| Find (unambiguously) an immediate subterm of a given type
|
|
| Produced by Haddock version 0.8 |