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 gf where
- gTraverseSum :: GenericTraverseC tag pt => 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.
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 gf where Source #
gTraverseSum :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p) Source #
Instances
GenericTraverse tag => GTraverseSum (tag :: k1) (V1 :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum gTraverseSum :: forall pt (p :: k10). GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (V1 p) Source # | |
(Alternative (GenericTraverseF tag), Monad (GenericTraverseF tag), GenericTraverseSum tag, GTraverseCSum tag cd gf, Datatype cd, KnownSymbols (CstrNames gf)) => GTraverseSum (tag :: k1) (D1 cd gf :: k2 -> Type) Source # | Test all constructors of the given non-void data type; if they all fail, run a failure action and pass it all the constructors names in the type. |
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 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 # |