| Haskell Hierarchical Libraries (base package) | Contents | Index

Data.Generics.Twins

Portability | non-portable
Stability | experimental
Maintainer | libraries@haskell.org

Contents

Generic folds and maps that also accumulate
Mapping combinators for twin traversal
Typical twin traversals

Description
"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides support for multi-parameter traversal, which is also demonstrated with generic operations like equality.
Synopsis

gfoldlAccum :: Data d => (forall d r . Data d => a -> c (d -> r) -> d -> (a, c r)) -> (forall g . a -> g -> (a, c g)) -> a -> d -> (a, c d)
gmapAccumT :: Data d => (forall d . Data d => a -> d -> (a, d)) -> a -> d -> (a, d)
gmapAccumM :: (Data d, Monad m) => (forall d . Data d => a -> d -> (a, m d)) -> a -> d -> (a, m d)
gmapAccumQl :: Data d => (r -> r' -> r) -> r -> (forall d . Data d => a -> d -> (a, r')) -> a -> d -> (a, r)
gmapAccumQr :: Data d => (r' -> r -> r) -> r -> (forall d . Data d => a -> d -> (a, r')) -> a -> d -> (a, r)
gmapAccumQ :: Data d => (forall d . Data d => a -> d -> (a, q)) -> a -> d -> (a, [q])
gzipWithT :: GenericQ GenericT -> GenericQ GenericT
gzipWithM :: Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)
gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])
geq :: Data a => a -> a -> Bool
gzip :: (forall a b . (Data a, Data b) => a -> b -> Maybe b) -> forall a b . (Data a, Data b) => a -> b -> Maybe b

Generic folds and maps that also accumulate
gfoldlAccum :: Data d => (forall d r . Data d => a -> c (d -> r) -> d -> (a, c r)) -> (forall g . a -> g -> (a, c g)) -> a -> d -> (a, c d)
gfoldl with accumulation
gmapAccumT :: Data d => (forall d . Data d => a -> d -> (a, d)) -> a -> d -> (a, d)
gmapT with accumulation
gmapAccumM :: (Data d, Monad m) => (forall d . Data d => a -> d -> (a, m d)) -> a -> d -> (a, m d)
gmapM with accumulation
gmapAccumQl :: Data d => (r -> r' -> r) -> r -> (forall d . Data d => a -> d -> (a, r')) -> a -> d -> (a, r)
gmapQl with accumulation
gmapAccumQr :: Data d => (r' -> r -> r) -> r -> (forall d . Data d => a -> d -> (a, r')) -> a -> d -> (a, r)
gmapQr with accumulation
gmapAccumQ :: Data d => (forall d . Data d => a -> d -> (a, q)) -> a -> d -> (a, [q])
gmapQ with accumulation
Mapping combinators for twin traversal
gzipWithT :: GenericQ GenericT -> GenericQ GenericT
Twin map for transformation
gzipWithM :: Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)
Twin map for monadic transformation
gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])
Twin map for queries
Typical twin traversals
geq :: Data a => a -> a -> Bool
Generic equality: an alternative to "deriving Eq"
gzip :: (forall a b . (Data a, Data b) => a -> b -> Maybe b) -> forall a b . (Data a, Data b) => a -> b -> Maybe b
Generic zip controlled by a function with type-specific branches
Produced by Haddock version 0.7