 | uniplate-1.6: Help writing simple, concise and fast generic operations. | Contents | Index |
|
|
|
| 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. Users should also import either Data.Generics.Uniplate.Data
or Data.Generics.Uniplate.Direct.
Compos is described in the paper: "A Pattern for Almost Compositional Functions"
by Bjorn Bringert and Aarne Ranta.
|
|
| Synopsis |
|
|
|
| Documentation |
|
| class Uniplate a => Compos a |
| If you want to keep an existing type class
|
|
|
| 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 2.7.2 |