
Data.Generics.Twins  Portability  nonportable (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 support for multiparameter 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 :: GenericQ (GenericM Maybe) > GenericQ (GenericM Maybe) 



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)  Source 

gfoldl with accumulation


gmapAccumT :: Data d => (forall d . Data d => a > d > (a, d)) > a > d > (a, d)  Source 

gmapT with accumulation


gmapAccumM :: (Data d, Monad m) => (forall d . Data d => a > d > (a, m d)) > a > d > (a, m d)  Source 

gmapM with accumulation


gmapAccumQl :: Data d => (r > r' > r) > r > (forall d . Data d => a > d > (a, r')) > a > d > (a, r)  Source 

gmapQl with accumulation


gmapAccumQr :: Data d => (r' > r > r) > r > (forall d . Data d => a > d > (a, r')) > a > d > (a, r)  Source 

gmapQr with accumulation


gmapAccumQ :: Data d => (forall d . Data d => a > d > (a, q)) > a > d > (a, [q])  Source 

gmapQ with accumulation


Mapping combinators for twin traversal



Twin map for transformation



Twin map for monadic transformation



Twin map for queries


Typical twin traversals



Generic equality: an alternative to "deriving Eq"



Generic zip controlled by a function with typespecific branches


Produced by Haddock version 0.8 