| 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 f f' where
- gTraverseSum :: GenericTraverseC f pt => PfxTagCfg pt -> f (f' p)
- class GTraverseSum' cd f f' where
- gTraverseSum' :: GenericTraverseC f pt => 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 f f' where Source #
Methods
gTraverseSum :: GenericTraverseC f pt => PfxTagCfg pt -> f (f' p) Source #
Instances
| (Functor f, GTraverseSum' cd f f') => GTraverseSum f (D1 cd f' :: k -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseSum :: forall pt (p :: k0). GenericTraverseC f pt => PfxTagCfg pt -> f (D1 cd f' p) Source # | |
class GTraverseSum' cd f f' where Source #
Methods
gTraverseSum' :: GenericTraverseC f pt => PfxTagCfg pt -> f (f' p) Source #
Instances
| (TypeError ENoEmpty :: Constraint) => GTraverseSum' (cd :: k1) f (V1 :: k2 -> Type) Source # | Refuse to derive an instance for an empty data type. |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseSum' :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f (V1 p) Source # | |
| (GenericTraverseSum f, GTraverseCSum cd f (l :+: r), Datatype cd) => GTraverseSum' (cd :: k1) f (l :+: r :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseSum' :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f ((l :+: r) p) Source # | |
| (TypeError EUnexpectedNonSum :: Constraint) => GTraverseSum' (cd :: k1) f (C1 cc f' :: k2 -> Type) Source # | Refuse to derive a non-sum instance if we expected a sum data type. |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseSum' :: forall pt (p :: k). GenericTraverseC f pt => PfxTagCfg pt -> f (C1 cc 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 # | |