Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Generic.Data.Function.Traverse
Description
Synopsis
- class GenericTraverse f where
- type GenericTraverseC f a :: Constraint
- genericTraverseAction :: GenericTraverseC f a => String -> String -> Maybe String -> Natural -> f a
- genericTraverseNonSum :: forall {cd} {gf} asserts f a. (Generic a, Rep a ~ D1 cd gf, GTraverseNonSum cd f gf, ApplyGCAsserts asserts f, Functor f) => f a
- class GTraverseNonSum (cd :: Meta) f f'
- 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
- genericTraverseSum :: forall {cd} {gf} opts asserts f a pt. (Generic a, Rep a ~ D1 cd gf, GTraverseSum opts cd f gf, ApplyGCAsserts asserts f, GenericTraverseC f pt, Functor f) => PfxTagCfg pt -> f a
- class GTraverseSum (opts :: SumOpts) cd f f'
- eqShowPfxTagCfg :: (Eq a, Show a) => (String -> a) -> PfxTagCfg a
Documentation
class GenericTraverse f where Source #
Applicative
functors that can be generically traverse
d.
Associated Types
type GenericTraverseC f a :: Constraint Source #
The type class providing (applicative) actions for permitted types.
Methods
genericTraverseAction Source #
Arguments
:: GenericTraverseC f a | |
=> String | data type name |
-> String | constructor name |
-> Maybe String | record name (if present) |
-> Natural | field index |
-> f a |
The action in traverse
(first argument).
We include data type metadata because this function is useful for monadic parsers, which can record it in error messages. (We don't do it for foldMap because it's pure.)
Instances
GenericTraverse EmptyRec0 Source # |
Can result in type errors lacking context: a field missing a Maybe silly. |
Defined in Generic.Data.Function.Traverse.Constructor Associated Types type GenericTraverseC EmptyRec0 a Source # | |
GenericTraverse NoRec0 Source # |
|
Defined in Generic.Data.Function.Traverse.Constructor Associated Types type GenericTraverseC NoRec0 a Source # |
genericTraverseNonSum :: forall {cd} {gf} asserts f a. (Generic a, Rep a ~ D1 cd gf, GTraverseNonSum cd f gf, ApplyGCAsserts asserts f, Functor f) => f a Source #
Generic traverse
over a term of non-sum data type f a
.
class GTraverseNonSum (cd :: Meta) f f' Source #
Minimal complete definition
Instances
GTraverseNonSum cd (f :: Type -> Type) (V1 :: k -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.NonSum Methods gTraverseNonSum :: forall (p :: k0). f (V1 p) Source # | |
GTraverseNonSum cd (f :: Type -> Type) (l :+: r :: k -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.NonSum Methods gTraverseNonSum :: forall (p :: k0). f ((l :+: r) p) Source # | |
(Functor f, GTraverseC cd cc 0 f f') => GTraverseNonSum cd (f :: Type -> Type) (C1 cc f' :: k -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.NonSum Methods gTraverseNonSum :: forall (p :: k0). f (C1 cc f' p) Source # |
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.
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
|
genericTraverseSum :: forall {cd} {gf} opts asserts f a pt. (Generic a, Rep a ~ D1 cd gf, GTraverseSum opts cd f gf, ApplyGCAsserts asserts f, GenericTraverseC f pt, Functor f) => PfxTagCfg pt -> f a Source #
Generic traverse
over a term of sum data type f a
.
You must provide a configuration for how to handle constructors.
class GTraverseSum (opts :: SumOpts) cd f f' Source #
Minimal complete definition