RepLib-0.5.4: Generic programming library with representation types

Copyright(c) The University of Pennsylvania 2006
LicenseBSD
Maintainersweirich@cis.upenn.edu
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Generics.RepLib.SYB.Schemes

Description

Derived from Data.Generics.Schemes Only modification: Data class becomes Rep class otherwise import our version of the libraries For now, missing "somewhere" (lacking mapMp)

Synopsis

Documentation

everywhere :: (forall a. Rep a => a -> a) -> forall a. Rep a => a -> a Source #

Apply a transformation everywhere in bottom-up manner

everywhere' :: (forall a. Rep a => a -> a) -> forall a. Rep 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

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

Apply a monadic transformation at least somewhere somewhere :: MonadPlus m => GenericM m -> GenericM m

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

listify :: Rep 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 -> (s -> s -> s) -> GenericQ (s -> s) -> GenericQ s 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 :: Rep 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 :: Rep a => a -> GenericQ Int Source #

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

gfindtype :: (Rep x, Rep y) => x -> Maybe y Source #

Find (unambiguously) an immediate subterm of a given type