The DataMc class is similar to the standard scrap-your-boilerplate
Data.Data.Data class, but with two additional constraints:
1. All data must be constructed using a particular user-defined data type with a single
2. The data structure must be traversed using a specific monad.
Other than this, the class behaves very much like the standard SYB design pattern.
|class Typeable a => DataMc m c a where|
|The class itself. Here m is the monad, c the data type and a the type arguemnt
|gmapMc :: (forall d. DataMc m c d => c d -> m (c d)) -> c a -> m (c a)|
|Generic mapping function for transformations.
|gmapMqc :: (forall d. DataMc m c d => c d -> m r) -> c a -> m [r]|
|Generic mapping function for queries.
|type GenericMc m c = forall a. DataMc m c a => c a -> m (c a)|
|type GenericMqc m r c = forall a. DataMc m c a => c a -> m r|
|everywhereMc :: Monad m => GenericMc m c -> GenericMc m c|
|Type extension for transformations. Acts similarly to Data.Generics.Schemes.everywhere
|everythingMc :: Monad m => (r -> r -> r) -> GenericMqc m r c -> GenericMqc m r c|
|Type extension for queries. Acts similarly to Data.Generics.Schemes.everything
|Produced by Haddock version 2.4.2|