mgeneric-0.0.0.2: Generics with multiple parameters

Safe HaskellNone
LanguageHaskell2010

Data.MFoldable

Synopsis

Documentation

type family MonoidMap as m Source

MonoidMap as m ~ Map (\a -> (a -> m)) as

Equations

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

class MFoldable f as | as -> k where Source

MFoldable type class, generalisation of Foldable, Bifoldable, etc.

>>> instance MFoldable (,,) '[a, b, c]
>>> mfoldMap (Sum `HCons` (Sum . length) `HCons` const mempty `HCons` HNil) (1, "foobar", 5) = 7

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

Map elements of each parameter type of a structure to a monoid, and combine the results.

Proxy-less version of mfoldMapP

mfoldMap :: HList '[a1 -> m, ..., an -> m] -> f :$: '[a1, ..., an] -> m

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

Combine the elements of a structure when all its parameters are the same monoid.