uniplate-1.2.0.3: Uniform type generic traversals.ContentsIndex
Data.Generics.SYB
Description

SYB compatibility layer. This module serves as a drop-in replacement in some situations for some of the SYB operations. Must be used in conjunction with Data.Generics.Biplate.

From the paper: "Scrap your boilerplate: a practical design pattern for generic programming" by Ralf Lammel and Simon Peyton Jones.

Synopsis
gmapT :: Uniplate a => (a -> a) -> a -> a
gmapQl :: Uniplate a => (r -> r' -> r) -> r -> (a -> r') -> a -> r
gmapQr :: Uniplate a => (r' -> r -> r) -> r -> (a -> r') -> a -> r
gmapQ :: Uniplate a => (a -> u) -> a -> [u]
gmapQi :: Uniplate a => Int -> (a -> u) -> a -> u
gmapM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
mkT :: (a -> a) -> a -> a
everywhere :: Biplate b a => (a -> a) -> b -> b
mkM :: Monad m => (a -> m a) -> a -> m a
everywhereM :: (Biplate b a, Monad m) => (a -> m a) -> b -> m b
mkQ :: r -> (a -> r) -> (r, a -> r)
everything :: Biplate b a => (r -> r -> r) -> (r, a -> r) -> b -> r
Documentation
gmapT :: Uniplate a => (a -> a) -> a -> a
gmapT == descend
gmapQl :: Uniplate a => (r -> r' -> r) -> r -> (a -> r') -> a -> r
Use children and foldl
gmapQr :: Uniplate a => (r' -> r -> r) -> r -> (a -> r') -> a -> r
Use children and foldr
gmapQ :: Uniplate a => (a -> u) -> a -> [u]
Use children
gmapQi :: Uniplate a => Int -> (a -> u) -> a -> u
Use children and !!
gmapM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
gmapM == descendM
mkT :: (a -> a) -> a -> a
mkT == id
everywhere :: Biplate b a => (a -> a) -> b -> b
everywhere == transformBi
mkM :: Monad m => (a -> m a) -> a -> m a
mkM == id
everywhereM :: (Biplate b a, Monad m) => (a -> m a) -> b -> m b
everywhereM == transformBiM
mkQ :: r -> (a -> r) -> (r, a -> r)
Only for use with everything
everything :: Biplate b a => (r -> r -> r) -> (r, a -> r) -> b -> r

Use universe or universeBi, perhaps followed by a fold.

Not an exact equivalent to the SYB everything, as the operators may be applied in different orders.

Produced by Haddock version 0.8