syb-extras-0.2.0: Higher order versions of the Scrap Your Boilerplate classes

Data.Data.Extras

Contents

Synopsis

Data.Data

Kind: *

module Data.Data

Kind: * -> *

class Typeable1 f => Data1 f whereSource

Methods

gfoldl1 :: Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> f a -> c (f a)Source

gunfold1 :: Data a => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (f a)Source

toConstr1 :: Data a => f a -> ConstrSource

dataTypeOf1 :: Data a => f a -> DataTypeSource

dataCast1_1 :: (Typeable1 t, Data a) => (forall d. Data d => c (t d)) -> Maybe (c (f a))Source

dataCast2_1 :: (Typeable2 t, Data a) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (f a))Source

gmapT1 :: Data a => (forall b. Data b => b -> b) -> f a -> f aSource

gmapQl1 :: Data a => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> f a -> rSource

gmapQr1 :: Data a => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> f a -> rSource

gmapQ1 :: Data a => (forall d. Data d => d -> u) -> f a -> [u]Source

gmapQi1 :: Data a => Int -> (forall d. Data d => d -> u) -> f a -> uSource

gmapM1 :: (Monad m, Data a) => (forall d. Data d => d -> m d) -> f a -> m (f a)Source

gmapMp1 :: (MonadPlus m, Data a) => (forall d. Data d => d -> m d) -> f a -> m (f a)Source

gmapMo1 :: (MonadPlus m, Data a) => (forall d. Data d => d -> m d) -> f a -> m (f a)Source

Instances

Data1 [] 
Data1 Maybe 
Data a => Data1 (Either a) 
Data a => Data1 ((,) a) 
Data1 f => Data1 (WrappedData1 f) 
(Data2 f, Data a) => Data1 (WrappedData2 f a) 

fromConstr1 :: (Data1 f, Data a) => Constr -> f aSource

fromConstrB1 :: (Data1 f, Data a) => (forall d. Data d => d) -> Constr -> f aSource

fromConstrM1 :: (Monad m, Data1 f, Data a) => (forall d. Data d => m d) -> Constr -> m (f a)Source

Kind: * -> * -> *

class Typeable2 f => Data2 f whereSource

Methods

gfoldl2 :: (Data a, Data x) => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> f a x -> c (f a x)Source

gunfold2 :: (Data a, Data x) => (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (f a x)Source

toConstr2 :: (Data a, Data x) => f a x -> ConstrSource

dataTypeOf2 :: (Data a, Data x) => f a x -> DataTypeSource

dataCast1_2 :: (Typeable1 t, Data a, Data x) => (forall d. Data d => c (t d)) -> Maybe (c (f a x))Source

dataCast2_2 :: (Typeable2 t, Data a, Data x) => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (f a x))Source

gmapT2 :: (Data a, Data x) => (forall b. Data b => b -> b) -> f a x -> f a xSource

gmapQl2 :: (Data a, Data x) => (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> f a x -> rSource

gmapQr2 :: (Data a, Data x) => (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> f a x -> rSource

gmapQ2 :: (Data a, Data x) => (forall d. Data d => d -> u) -> f a x -> [u]Source

gmapQi2 :: (Data a, Data x) => Int -> (forall d. Data d => d -> u) -> f a x -> uSource

gmapM2 :: (Monad m, Data a, Data x) => (forall d. Data d => d -> m d) -> f a x -> m (f a x)Source

gmapMp2 :: (MonadPlus m, Data a, Data x) => (forall d. Data d => d -> m d) -> f a x -> m (f a x)Source

gmapMo2 :: (MonadPlus m, Data a, Data x) => (forall d. Data d => d -> m d) -> f a x -> m (f a x)Source

Instances

Data2 Either 
Data2 (,) 
Data2 f => Data2 (WrappedData2 f) 

fromConstr2 :: (Data2 f, Data a, Data x) => Constr -> f a xSource

fromConstrB2 :: (Data2 f, Data a, Data x) => (forall d. Data d => d) -> Constr -> f a xSource

fromConstrM2 :: (Monad m, Data2 f, Data a, Data x) => (forall d. Data d => m d) -> Constr -> m (f a x)Source

Combinators

Lifting k in gfoldl{n} k

liftK :: (Data1 d1, Data a) => (forall d b. Data d => c (d -> b) -> d -> c b) -> c (d1 a -> b') -> d1 a -> c b'Source

liftK2 :: (Data2 d2, Data a, Data x) => (forall d b. Data d => c (d -> b) -> d -> c b) -> c (d2 a x -> b') -> d2 a x -> c b'Source

Lifting f in gunfold{n} f

liftF :: (Data1 b1, Data a) => (forall b r. Data b => c (b -> r) -> c r) -> c (b1 a -> r') -> c r'Source

liftF2 :: (Data2 b2, Data a, Data x) => (forall b r. Data b => c (b -> r) -> c r) -> c (b2 a x -> r') -> c r'Source