mgeneric-0.0.0.0: Generics with multiple parameters

Safe HaskellNone
LanguageHaskell2010

Data.MFoldable

Documentation

type family MonoidMap as m Source

Equations

MonoidMap [] m = [] 
MonoidMap (a : as) m = (a -> m) : MonoidMap as m 

class MFoldable f as | as -> k where Source

Minimal complete definition

Nothing

Methods

mfoldMapP :: Monoid m => Proxy f -> Proxy as -> HList (MonoidMap as m) -> (f :$: as) -> m Source

Instances

MFoldable * Bool ([] *) 
MFoldable * Ordering ([] *) 
MFoldable * () ([] *) 
MFoldable (* -> * -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,,) ((:) * a ((:) * b ((:) * c ((:) * d ((:) * e ((:) * f ((:) * g ((:) * h ((:) * i ([] *)))))))))) 
MFoldable (* -> * -> * -> * -> * -> * -> * -> * -> *) (,,,,,,,) ((:) * a ((:) * b ((:) * c ((:) * d ((:) * e ((:) * f ((:) * g ((:) * h ([] *))))))))) 
MFoldable (* -> * -> * -> * -> * -> * -> * -> *) (,,,,,,) ((:) * a ((:) * b ((:) * c ((:) * d ((:) * e ((:) * f ((:) * g ([] *)))))))) 
MFoldable (* -> * -> * -> * -> * -> * -> *) (,,,,,) ((:) * a ((:) * b ((:) * c ((:) * d ((:) * e ((:) * f ([] *))))))) 
MFoldable (* -> * -> * -> * -> * -> *) (,,,,) ((:) * a ((:) * b ((:) * c ((:) * d ((:) * e ([] *)))))) 
MFoldable (* -> * -> * -> * -> *) (,,,) ((:) * a ((:) * b ((:) * c ((:) * d ([] *))))) 
MFoldable (* -> * -> * -> *) (,,) ((:) * a ((:) * b ((:) * c ([] *)))) 
MFoldable (* -> * -> *) Either ((:) * a ((:) * b ([] *))) 
MFoldable (* -> * -> *) (,) ((:) * a ((:) * b ([] *))) 
MFoldable (* -> *) [] ((:) * a ([] *)) 
MFoldable (* -> *) Sum ((:) * a ([] *)) 
MFoldable (* -> *) Product ((:) * a ([] *)) 
MFoldable (* -> *) First ((:) * a ([] *)) 
MFoldable (* -> *) Last ((:) * a ([] *)) 
MFoldable (* -> *) Maybe ((:) * a ([] *)) 
MFoldable (* -> *) Identity ((:) * a ([] *)) 

mfoldMap :: forall m a f as. (Monoid m, Unapply a f as, MFoldable f as) => HList (MonoidMap as m) -> a -> m Source

class Repeat m as where Source

Methods

repeatId :: Proxy m -> Proxy as -> HList (MonoidMap as m) Source

Instances

Repeat m ([] *) 
Repeat m as => Repeat m ((:) * m as) 

mfold :: forall m f as a. (Monoid m, Repeat m as, MFoldable f as, Unapply a f as) => a -> m Source

class GMFoldable f as where Source

Methods

mfoldMapG :: Monoid m => HList (MonoidMap as m) -> In f as -> m Source

Instances

GMFoldable (UT *) fs 
GMFoldable (UV *) fs 
GFMFoldable f as => GMFoldable (UF * f) as 
(GMFoldable u as, GMFoldable v as) => GMFoldable ((:++:) * u v) as 
(GMFoldable u as, GMFoldable v as) => GMFoldable ((:**:) * u v) as 

class GFMFoldable f as where Source

Methods

mfoldMapGF :: Monoid m => HList (MonoidMap as m) -> InField f as -> m Source

Instances

GFPMFoldable n as => GFMFoldable (FP * n) as 
GFMFoldable (FK * a) as 
(MFoldable k f (ExpandField as bs), AdaptFieldMonoid as bs) => GFMFoldable ((:@:) * k f as) bs 

class GFPMFoldable n as where Source

Methods

mfoldMapGFP :: Monoid m => Proxy n -> Proxy as -> HList (MonoidMap as m) -> (as :!: n) -> m Source

Instances

GFPMFoldable NZ ((:) * a as) 
GFPMFoldable n as => GFPMFoldable (NS n) ((:) * a as) 

class AdaptFieldMonoid f as where Source

Methods

adaptFieldMonoid :: Monoid m => Proxy f -> Proxy as -> Proxy m -> HList (MonoidMap as m) -> HList (MonoidMap (ExpandField f as) m) Source

Instances

AdaptFieldMonoid ([] (Field *)) fs 
(MFoldable k f (ExpandField bs fs), AdaptFieldMonoid bs fs, AdaptFieldMonoid as fs) => AdaptFieldMonoid ((:) (Field *) ((:@:) * k f bs) as) fs 
(GFPMFoldable n fs, AdaptFieldMonoid as fs) => AdaptFieldMonoid ((:) (Field *) (FP * n) as) fs 
AdaptFieldMonoid as fs => AdaptFieldMonoid ((:) (Field *) (FK * a) as) fs