Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
foldMap
for sum types where constructors are encoded by mapping the
constructor name.
Note that constructor names are unique per type. So as long as your mapping
function similarly outputs unique values of your monoid for each constructor,
you should be able to "reverse" the process (e.g. for generic traverse
).
Synopsis
- class GFoldMapSum (opts :: SumOpts) m f where
- gFoldMapSum :: (String -> m) -> f p -> m
- class GFoldMapCSum m f where
- gFoldMapCSum :: (String -> m) -> f p -> m
Documentation
class GFoldMapSum (opts :: SumOpts) m f where Source #
gFoldMapSum :: (String -> m) -> f p -> m Source #
Instances
GFoldMapSum opts m (V1 :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.Sum gFoldMapSum :: forall (p :: k0). (String -> m) -> V1 p -> m Source # | |
GFoldMapCSum m (C1 c f) => GFoldMapSum 'AllowSingletonSum m (C1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.Sum gFoldMapSum :: forall (p :: k0). (String -> m) -> C1 c f p -> m Source # | |
GFoldMapSum 'SumOnly m (C1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.Sum gFoldMapSum :: forall (p :: k0). (String -> m) -> C1 c f p -> m Source # | |
GFoldMapCSum m (l :+: r) => GFoldMapSum opts m (l :+: r :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.Sum gFoldMapSum :: forall (p :: k0). (String -> m) -> (l :+: r) p -> m Source # |
class GFoldMapCSum m f where Source #
Sum type handler prefixing constructor contents with their mapped
constructor name via a provided String -> m
.
TODO rename
gFoldMapCSum :: (String -> m) -> f p -> m Source #
Instances
(GFoldMapCSum m l, GFoldMapCSum m r) => GFoldMapCSum m (l :+: r :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.Sum gFoldMapCSum :: forall (p :: k0). (String -> m) -> (l :+: r) p -> m Source # | |
(Semigroup m, Constructor c, GFoldMapC m f) => GFoldMapCSum m (C1 c f :: k -> Type) Source # | |
Defined in Generic.Data.Function.FoldMap.Sum gFoldMapCSum :: forall (p :: k0). (String -> m) -> C1 c f p -> m Source # |