module Data.Generics.SYB where
import Data.Generics.Uniplate.Operations
gmapT :: Uniplate a => (a -> a) -> a -> a
gmapT :: forall a. Uniplate a => (a -> a) -> a -> a
gmapT = forall a. Uniplate a => (a -> a) -> a -> a
descend
gmapQl :: Uniplate a => (r -> r' -> r) -> r -> (a -> r') -> a -> r
gmapQl :: forall a r r'.
Uniplate a =>
(r -> r' -> r) -> r -> (a -> r') -> a -> r
gmapQl r -> r' -> r
combine r
zero a -> r'
op = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl r -> r' -> r
combine r
zero forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> [a] -> [b]
map a -> r'
op forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall on. Uniplate on => on -> [on]
children
gmapQr :: Uniplate a => (r' -> r -> r) -> r -> (a -> r') -> a -> r
gmapQr :: forall a r' r.
Uniplate a =>
(r' -> r -> r) -> r -> (a -> r') -> a -> r
gmapQr r' -> r -> r
combine r
zero a -> r'
op = forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr r' -> r -> r
combine r
zero forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> [a] -> [b]
map a -> r'
op forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall on. Uniplate on => on -> [on]
children
gmapQ :: Uniplate a => (a -> u) -> a -> [u]
gmapQ :: forall a u. Uniplate a => (a -> u) -> a -> [u]
gmapQ a -> u
f = forall a b. (a -> b) -> [a] -> [b]
map a -> u
f forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall on. Uniplate on => on -> [on]
children
gmapQi :: Uniplate a => Int -> (a -> u) -> a -> u
gmapQi :: forall a u. Uniplate a => Int -> (a -> u) -> a -> u
gmapQi Int
i a -> u
f a
x = forall a u. Uniplate a => (a -> u) -> a -> [u]
gmapQ a -> u
f a
x forall a. [a] -> Int -> a
!! Int
i
gmapM :: (Uniplate a, Applicative m) => (a -> m a) -> a -> m a
gmapM :: forall a (m :: * -> *).
(Uniplate a, Applicative m) =>
(a -> m a) -> a -> m a
gmapM = forall on (m :: * -> *).
(Uniplate on, Applicative m) =>
(on -> m on) -> on -> m on
descendM
mkT :: (a -> a) -> (a -> a)
mkT :: forall a. (a -> a) -> a -> a
mkT = forall a. a -> a
id
everywhere :: Biplate b a => (a -> a) -> b -> b
everywhere :: forall b a. Biplate b a => (a -> a) -> b -> b
everywhere = forall b a. Biplate b a => (a -> a) -> b -> b
transformBi
mkM :: (a -> m a) -> a -> m a
mkM :: forall a (m :: * -> *). (a -> m a) -> a -> m a
mkM = forall a. a -> a
id
everywhereM :: (Biplate b a, Monad m, Applicative m) => (a -> m a) -> b -> m b
everywhereM :: forall b a (m :: * -> *).
(Biplate b a, Monad m, Applicative m) =>
(a -> m a) -> b -> m b
everywhereM = forall (m :: * -> *) from to.
(Monad m, Applicative m, Biplate from to) =>
(to -> m to) -> from -> m from
transformBiM
mkQ :: r -> (a -> r) -> (r, a -> r)
mkQ :: forall r a. r -> (a -> r) -> (r, a -> r)
mkQ = (,)
everything :: Biplate b a => (r -> r -> r) -> (r, a -> r) -> b -> r
everything :: forall b a r. Biplate b a => (r -> r -> r) -> (r, a -> r) -> b -> r
everything r -> r -> r
combine (r
nil, a -> r
op) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl r -> r -> r
combine r
nil forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (a -> b) -> [a] -> [b]
map a -> r
op forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall from to. Biplate from to => from -> [to]
universeBi