Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
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 traverse
d.
For sum types, we require a monad with choice to differentiate constructors.
genericTraverseSumPfxTagAction Source #
:: 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 #
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.
PfxTagCfg | |
|
class GTraverseSum (opts :: SumOpts) cd f f' where Source #
gTraverseSum :: GenericTraverseC f pt => PfxTagCfg pt -> f (f' p) Source #
Instances
GTraverseSum opts (cd :: k1) f (V1 :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum gTraverseSum :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f (V1 p) Source # | |
(GenericTraverseSum f, GTraverseCSum cd f (C1 cc f'), Datatype cd) => GTraverseSum 'AllowSingletonSum (cd :: k1) f (C1 cc f' :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum gTraverseSum :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f (C1 cc f' p) Source # | |
GTraverseSum 'SumOnly (cd :: k1) f (C1 cc f' :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum gTraverseSum :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f (C1 cc f' p) Source # | |
(GenericTraverseSum f, GTraverseCSum cd f (l :+: r), Datatype cd) => GTraverseSum opts (cd :: k1) f (l :+: r :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum gTraverseSum :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f ((l :+: r) p) Source # |
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).
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 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 gTraverseCSum :: forall pt (p :: k). PfxTagCfg pt -> pt -> f (C1 cc f' p) Source # |