| Safe Haskell | Safe-Inferred |
|---|---|
| Language | GHC2021 |
Generic.Data.Function.Traverse.Sum
Synopsis
- class (GenericTraverse f, Alternative f, Monad f) => GenericTraverseSum f where
- genericTraverseSumPfxTagAction :: GenericTraverseC f pt => String -> f pt
- genericTraverseSumNoMatchingCstrAction :: String -> [String] -> Text -> f a
- data PfxTagCfg a = PfxTagCfg {
- pfxTagCfgFromCstr :: String -> a
- pfxTagCfgEq :: a -> a -> Bool
- pfxTagCfgShow :: a -> Text
- class GTraverseSum (opts :: SumOpts) cd f f' where
- gTraverseSum :: GenericTraverseC f pt => PfxTagCfg pt -> f (f' p)
- gTraverseSum' :: forall {p} cd f f' pt. (GenericTraverseC f pt, GenericTraverseSum f, GTraverseCSum cd f f', Datatype cd) => PfxTagCfg pt -> f (f' p)
- class GTraverseCSum cd f f' where
- gTraverseCSum :: PfxTagCfg pt -> pt -> f (f' p)
Documentation
class (GenericTraverse f, Alternative f, Monad f) => GenericTraverseSum f where Source #
Sum type monads that can be generically traversed.
For sum types, we require a monad with choice to differentiate constructors.
Methods
genericTraverseSumPfxTagAction Source #
Arguments
| :: GenericTraverseC f pt | |
| => String | data type name |
| -> f pt |
Try to parse a prefix tag of type pt.
Relevant metadata is provided as arguments.
genericTraverseSumNoMatchingCstrAction Source #
Arguments
| :: String | data type name |
| -> [String] | non-matching constructor names |
| -> Text | prefix tag, prettified |
| -> f a |
Parse error due to no constructor matching the parsed prefix tag.
Relevant metadata is provided as arguments.
How to use a type as a prefix tag in a generic sum type parser.
Constructors
| PfxTagCfg | |
Fields
| |
class GTraverseSum (opts :: SumOpts) cd f f' where Source #
Methods
gTraverseSum :: GenericTraverseC f pt => PfxTagCfg pt -> f (f' p) Source #
Instances
gTraverseSum' :: forall {p} cd f f' pt. (GenericTraverseC f pt, GenericTraverseSum f, GTraverseCSum cd f f', Datatype cd) => PfxTagCfg pt -> f (f' p) Source #
class GTraverseCSum cd f f' where Source #
Generic getter (constructor sum level).
Methods
gTraverseCSum :: PfxTagCfg pt -> pt -> f (f' p) Source #
Instances
| (Functor f, Alternative f, GTraverseCSum cd f l, GTraverseCSum cd f r) => GTraverseCSum (cd :: k1) (f :: Type -> Type) (l :+: r :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseCSum :: forall pt (p :: k). PfxTagCfg pt -> pt -> f ((l :+: r) p) Source # | |
| (Alternative f, GTraverseC cd cc 0 f f', Constructor cc) => GTraverseCSum (cd :: k1) (f :: Type -> Type) (C1 cc f' :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseCSum :: forall pt (p :: k). PfxTagCfg pt -> pt -> f (C1 cc f' p) Source # | |