Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
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
Nothing
mfoldMapP :: Monoid m => Proxy f -> Proxy as -> HList (MonoidMap as m) -> (f :$: as) -> m Source
see mfoldMap
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