Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Generic.Data.Function.Traverse
Description
Synopsis
- class GenericTraverse tag where
- type GenericTraverseF tag :: Type -> Type
- type GenericTraverseC tag a :: Constraint
- genericTraverseAction :: GenericTraverseC tag a => String -> String -> Maybe String -> Natural -> GenericTraverseF tag a
- genericTraverseV1 :: GenericTraverseF tag (V1 p)
- genericTraverseNonSum :: forall {k} (tag :: k) a. (Generic a, Functor (GenericTraverseF tag), GTraverseNonSum tag (Rep a)) => GenericTraverseF tag a
- class GTraverseNonSum tag gf
- genericTraverseSum :: forall tag sumtag a pt. (Generic a, Functor (GenericTraverseF tag), GTraverseSum tag sumtag (Rep a)) => ParseCstrTo sumtag pt -> (String -> GenericTraverseF tag pt) -> (forall x. String -> GenericTraverseF tag x) -> (pt -> pt -> Bool) -> GenericTraverseF tag a
- class GTraverseSum tag sumtag gf
- genericTraverseSumRaw :: forall tag a pt. (Generic a, Functor (GenericTraverseF tag), GTraverseSum tag Raw (Rep a)) => (String -> pt) -> (String -> GenericTraverseF tag pt) -> (forall x. String -> GenericTraverseF tag x) -> (pt -> pt -> Bool) -> GenericTraverseF tag a
Documentation
class GenericTraverse tag where Source #
Implementation enumeration type class for generic traverse
.
The type variable is uninstantiated, used purely as a tag. Good types include the type class used inside (providing you define the type class/it's not an orphan instance), or a custom void data type. See the binrep library on Hackage for an example.
Minimal complete definition
Associated Types
type GenericTraverseF tag :: Type -> Type Source #
The target Applicative
to traverse
to.
type GenericTraverseC tag a :: Constraint Source #
The type class providing the action in traverse
for permitted types.
Methods
genericTraverseAction Source #
Arguments
:: GenericTraverseC tag a | |
=> String | data type name |
-> String | constructor name |
-> Maybe String | record name (if present) |
-> Natural | field index |
-> GenericTraverseF tag 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.)
genericTraverseV1 :: GenericTraverseF tag (V1 p) Source #
Instances
genericTraverseNonSum :: forall {k} (tag :: k) a. (Generic a, Functor (GenericTraverseF tag), GTraverseNonSum tag (Rep a)) => GenericTraverseF tag a Source #
Generic traverse
over a term of non-sum data type f a
,
where f
is set by the tag
you pass.
class GTraverseNonSum tag gf Source #
Minimal complete definition
Instances
(Functor (GenericTraverseF tag), GTraverseNonSumD tag dtName gf) => GTraverseNonSum (tag :: k1) (D1 ('MetaData dtName _md2 _md3 _md4) gf :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.NonSum Methods gTraverseNonSum :: forall (p :: k10). GenericTraverseF tag (D1 ('MetaData dtName _md2 _md3 _md4) gf p) Source # |
genericTraverseSum :: forall tag sumtag a pt. (Generic a, Functor (GenericTraverseF tag), GTraverseSum tag sumtag (Rep a)) => ParseCstrTo sumtag pt -> (String -> GenericTraverseF tag pt) -> (forall x. String -> GenericTraverseF tag x) -> (pt -> pt -> Bool) -> GenericTraverseF tag a Source #
class GTraverseSum tag sumtag gf Source #
Minimal complete definition
Instances
GenericTraverse tag => GTraverseSum (tag :: k1) (sumtag :: k2) (V1 :: k3 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseSum :: forall pt (p :: k20). ParseCstrTo sumtag pt -> (String -> GenericTraverseF tag pt) -> (forall a. String -> GenericTraverseF tag a) -> (pt -> pt -> Bool) -> GenericTraverseF tag (V1 p) Source # | |
(f ~ GenericTraverseF tag, Alternative f, Monad f, KnownSymbol dtName, GTraverseCSum tag sumtag dtName gf) => GTraverseSum (tag :: k1) (sumtag :: k2) (D1 ('MetaData dtName _md2 _md3 _md4) gf :: k3 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseSum :: forall pt (p :: k20). ParseCstrTo sumtag pt -> (String -> GenericTraverseF tag pt) -> (forall a. String -> GenericTraverseF tag a) -> (pt -> pt -> Bool) -> GenericTraverseF tag (D1 ('MetaData dtName _md2 _md3 _md4) gf p) Source # |
genericTraverseSumRaw :: forall tag a pt. (Generic a, Functor (GenericTraverseF tag), GTraverseSum tag Raw (Rep a)) => (String -> pt) -> (String -> GenericTraverseF tag pt) -> (forall x. String -> GenericTraverseF tag x) -> (pt -> pt -> Bool) -> GenericTraverseF tag a Source #