
Data.Generics.Twins  Portability  nonportable  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 :: (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 typespecific branches


Produced by Haddock version 0.7 