Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- class GenericTraverse tag => GenericTraverseSum tag where
- genericTraverseSumPfxTagAction :: GenericTraverseC tag pt => String -> GenericTraverseF tag pt
- genericTraverseSumNoMatchingCstrAction :: String -> [String] -> Text -> GenericTraverseF tag a
- data PfxTagCfg a = PfxTagCfg {
- pfxTagCfgFromCstr :: String -> a
- pfxTagCfgEq :: a -> a -> Bool
- pfxTagCfgShow :: a -> Text
- class GTraverseSum tag (opts :: SumOpts) gf where
- gTraverseSum :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p)
- class GTraverseSumD tag cd (opts :: SumOpts) gf where
- gTraverseSumD :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p)
- gTraverseSumD' :: forall {p} tag cd gf pt. (GenericTraverseC tag pt, Alternative (GenericTraverseF tag), Monad (GenericTraverseF tag), GenericTraverseSum tag, GTraverseCSum tag cd gf, Datatype cd) => PfxTagCfg pt -> GenericTraverseF tag (gf p)
- class GTraverseCSum tag cd gf where
- gTraverseCSum :: PfxTagCfg pt -> pt -> GenericTraverseF tag (gf p)
Documentation
class GenericTraverse tag => GenericTraverseSum tag where Source #
Sum type monads that can be generically traverse
d.
We use Alternative
to handle "which constructor" checking on the term level.
genericTraverseSumPfxTagAction Source #
:: GenericTraverseC tag pt | |
=> String | data type name |
-> GenericTraverseF tag pt |
Try to parse a prefix tag of type pt
.
Relevant metadata is provided as arguments.
genericTraverseSumNoMatchingCstrAction Source #
:: String | data type name |
-> [String] | non-matching constructor names |
-> Text | prefix tag, prettified |
-> GenericTraverseF tag 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.
PfxTagCfg | |
|
class GTraverseSum tag (opts :: SumOpts) gf where Source #
gTraverseSum :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p) Source #
Instances
(GTraverseSumD tag cd opts gf, Functor (GenericTraverseF tag)) => GTraverseSum (tag :: k1) opts (D1 cd gf :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum gTraverseSum :: forall pt (p :: k10). GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (D1 cd gf p) Source # |
class GTraverseSumD tag cd (opts :: SumOpts) gf where Source #
gTraverseSumD :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p) Source #
Instances
gTraverseSumD' :: forall {p} tag cd gf pt. (GenericTraverseC tag pt, Alternative (GenericTraverseF tag), Monad (GenericTraverseF tag), GenericTraverseSum tag, GTraverseCSum tag cd gf, Datatype cd) => PfxTagCfg pt -> GenericTraverseF tag (gf p) Source #
class GTraverseCSum tag cd gf where Source #
gTraverseCSum :: PfxTagCfg pt -> pt -> GenericTraverseF tag (gf p) Source #
Instances
(Alternative (GenericTraverseF tag), GTraverseCSum tag cd l, GTraverseCSum tag cd r) => GTraverseCSum (tag :: k1) (cd :: k2) (l :+: r :: k3 -> Type) Source # | Combine constructor options with |
Defined in Generic.Data.Function.Traverse.Sum gTraverseCSum :: forall pt (p :: k20). PfxTagCfg pt -> pt -> GenericTraverseF tag ((l :+: r) p) Source # | |
(Alternative (GenericTraverseF tag), GTraverseC tag cd cc 0 gf, Constructor cc) => GTraverseCSum (tag :: k1) (cd :: k2) (C1 cc gf :: k3 -> Type) Source # | If the constructor matches the expected prefix tag, then return the action handling that constructor's contents, else return the empty action. |
Defined in Generic.Data.Function.Traverse.Sum gTraverseCSum :: forall pt (p :: k20). PfxTagCfg pt -> pt -> GenericTraverseF tag (C1 cc gf p) Source # |