Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Generic.Data.Function.Traverse.Constructor
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
- class GTraverseC cd cc (si :: Natural) tag gf where
- gTraverseC :: GenericTraverseF tag (gf p)
- type family ProdArity (f :: Type -> Type) :: Natural where ...
Documentation
class GenericTraverse tag where Source #
Implementation enumeration type class for generic traverse
.
The type variable is uninstantiated, used purely as a tag.
Avoid orphan instances by defining custom empty types to use here. See the binrep library on Hackage for an example.
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.)
Instances
GenericTraverse (EmptyRec0 f :: Type) Source # |
Note that one may write a valid instance using a |
Defined in Generic.Data.Function.Traverse.Constructor Associated Types type GenericTraverseF (EmptyRec0 f) :: Type -> Type Source # type GenericTraverseC (EmptyRec0 f) a Source # Methods genericTraverseAction :: GenericTraverseC (EmptyRec0 f) a => String -> String -> Maybe String -> Natural -> GenericTraverseF (EmptyRec0 f) a Source # | |
GenericTraverse (NoRec0 f :: Type) Source # |
|
Defined in Generic.Data.Function.Traverse.Constructor Associated Types type GenericTraverseF (NoRec0 f) :: Type -> Type Source # type GenericTraverseC (NoRec0 f) a Source # Methods genericTraverseAction :: GenericTraverseC (NoRec0 f) a => String -> String -> Maybe String -> Natural -> GenericTraverseF (NoRec0 f) a Source # |
class GTraverseC cd cc (si :: Natural) tag gf where Source #
Methods
gTraverseC :: GenericTraverseF tag (gf p) Source #
Instances
Applicative (GenericTraverseF tag) => GTraverseC (cd :: k2) (cc :: k3) 0 (tag :: k1) (U1 :: k4 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods gTraverseC :: forall (p :: k30). GenericTraverseF tag (U1 p) Source # | |
(Applicative (GenericTraverseF tag), GTraverseC cd cc si tag l, GTraverseC cd cc (si + ProdArity r) tag r) => GTraverseC (cd :: k2) (cc :: k3) si (tag :: k1) (l :*: r :: Type -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods gTraverseC :: forall (p :: k30). GenericTraverseF tag ((l :*: r) p) Source # | |
(GenericTraverse tag, GenericTraverseC tag a, Functor (GenericTraverseF tag), KnownNat si, Selector cs, Constructor cc, Datatype cd) => GTraverseC (cd :: k3) (cc :: k2) si (tag :: k1) (S1 cs (Rec0 a) :: k4 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods gTraverseC :: forall (p :: k30). GenericTraverseF tag (S1 cs (Rec0 a) p) Source # |