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

Compos compatibility layer. This module serves as a drop-in replacement in some situations for some of the Compos operations. Only the single-type traversals are supported, on normal algebraic data types. Must be used in conjunction with Data.Generics.UniplateStr.

From the paper: "A Pattern for Almost Compositional Functions" by Bjorn Bringert and Aarne Ranta.

Synopsis
class Uniplate a => Compos a where
composOp :: Uniplate a => (a -> a) -> a -> a
composOpM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
composOpM_ :: (Uniplate a, Monad m) => (a -> m ()) -> a -> m ()
composOpMonoid :: (Uniplate a, Monoid m) => (a -> m) -> a -> m
composOpMPlus :: (Uniplate a, MonadPlus m) => (a -> m b) -> a -> m b
composOpFold :: Uniplate a => b -> (b -> b -> b) -> (a -> b) -> a -> b
Documentation
class Uniplate a => Compos a where
If you want to keep an existing type class
Methods
composOp :: Uniplate a => (a -> a) -> a -> a
composOp == descend
composOpM :: (Uniplate a, Monad m) => (a -> m a) -> a -> m a
composOpM == descendM
composOpM_ :: (Uniplate a, Monad m) => (a -> m ()) -> a -> m ()
composOpM_ == composOpFold (return ()) (>>)
composOpMonoid :: (Uniplate a, Monoid m) => (a -> m) -> a -> m
composOpMonoid = composOpFold mempty mappend
composOpMPlus :: (Uniplate a, MonadPlus m) => (a -> m b) -> a -> m b
composOpMPlus = composOpFold mzero mplus
composOpFold :: Uniplate a => b -> (b -> b -> b) -> (a -> b) -> a -> b
Probably replace with universe, perhaps para
Produced by Haddock version 0.8