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 (opts :: SumOpts) cd tag gf where
- gTraverseSum :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p)
- gTraverseSum' :: forall {p} cd tag gf pt. (GenericTraverseC tag pt, Alternative (GenericTraverseF tag), Monad (GenericTraverseF tag), GenericTraverseSum tag, GTraverseCSum cd tag gf, Datatype cd) => PfxTagCfg pt -> GenericTraverseF tag (gf p)
- class GTraverseCSum cd tag 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 (opts :: SumOpts) cd tag gf where Source #
gTraverseSum :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p) Source #
Instances
gTraverseSum' :: forall {p} cd tag gf pt. (GenericTraverseC tag pt, Alternative (GenericTraverseF tag), Monad (GenericTraverseF tag), GenericTraverseSum tag, GTraverseCSum cd tag gf, Datatype cd) => PfxTagCfg pt -> GenericTraverseF tag (gf p) Source #
class GTraverseCSum cd tag gf where Source #
gTraverseCSum :: PfxTagCfg pt -> pt -> GenericTraverseF tag (gf p) Source #
Instances
(Alternative (GenericTraverseF tag), GTraverseCSum cd tag l, GTraverseCSum cd tag r) => GTraverseCSum (cd :: k2) (tag :: k1) (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 cd cc 0 tag gf, Constructor cc) => GTraverseCSum (cd :: k2) (tag :: k1) (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 # |