Safe Haskell | None |
---|---|
Language | Haskell2010 |
SYB compatibility layer. This module serves as a drop-in replacement in some situations for some of the SYB operations. Users should also import Data.Generics.Uniplate.Data.
SYB is described in 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, Applicative m) => (a -> m a) -> a -> m a
- mkT :: (a -> a) -> a -> a
- everywhere :: Biplate b a => (a -> a) -> b -> b
- mkM :: (a -> m a) -> a -> m a
- everywhereM :: (Biplate b a, Monad m, Applicative 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
everywhere :: Biplate b a => (a -> a) -> b -> b Source #
everywhere == transformBi
everywhereM :: (Biplate b a, Monad m, Applicative m) => (a -> m a) -> b -> m b Source #
everywhereM == transformBiM
mkQ :: r -> (a -> r) -> (r, a -> r) Source #
Only for use with everything
everything :: Biplate b a => (r -> r -> r) -> (r, a -> r) -> b -> r Source #
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.