generic-deriving-1.10.5: Generic programming library for generalised deriving.

Copyright2011-2012 Universiteit Utrecht, University of Oxford
LicenseBSD3
Maintainergenerics@haskell.org
Stabilityexperimental
Portabilitynon-portable
Safe HaskellTrustworthy
LanguageHaskell98

Generics.Deriving.Uniplate

Contents

Description

Summary: Functions inspired by the Uniplate generic programming library, mostly implemented by Sean Leather.

Synopsis

Generic Uniplate class

class Uniplate a where Source

Minimal complete definition

Nothing

Methods

children :: a -> [a] Source

context :: a -> [a] -> a Source

descend :: (a -> a) -> a -> a Source

descendM :: Monad m => (a -> m a) -> a -> m a Source

transform :: (a -> a) -> a -> a Source

transformM :: Monad m => (a -> m a) -> a -> m a Source

Instances

Derived functions

uniplate :: Uniplate a => a -> ([a], [a] -> a) Source

universe :: Uniplate a => a -> [a] Source

rewrite :: Uniplate a => (a -> Maybe a) -> a -> a Source

rewriteM :: (Monad m, Uniplate a) => (a -> m (Maybe a)) -> a -> m a Source

contexts :: Uniplate a => a -> [(a, a -> a)] Source

holes :: Uniplate a => a -> [(a, a -> a)] Source

para :: Uniplate a => (a -> [r] -> r) -> a -> r Source

Default definitions

childrendefault :: (Generic a, Uniplate' (Rep a) a) => a -> [a] Source

contextdefault :: (Generic a, Context' (Rep a) a) => a -> [a] -> a Source

descenddefault :: (Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a Source

descendMdefault :: (Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a Source

transformdefault :: (Generic a, Uniplate' (Rep a) a) => (a -> a) -> a -> a Source

transformMdefault :: (Generic a, Uniplate' (Rep a) a, Monad m) => (a -> m a) -> a -> m a Source

Internal Uniplate class

class Uniplate' f b where Source

Methods

children' :: f a -> [b] Source

descend' :: (b -> b) -> f a -> f a Source

descendM' :: Monad m => (b -> m b) -> f a -> m (f a) Source

transform' :: (b -> b) -> f a -> f a Source

transformM' :: Monad m => (b -> m b) -> f a -> m (f a) Source

Instances

Uniplate' * U1 a Source 
Uniplate' * (K1 i a) b Source 
Uniplate a => Uniplate' * (K1 i a) a Source 
(Uniplate' * f b, Uniplate' * g b) => Uniplate' * ((:+:) f g) b Source 
(Uniplate' * f b, Uniplate' * g b) => Uniplate' * ((:*:) f g) b Source 
Uniplate' * f b => Uniplate' * (M1 i c f) b Source