Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
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)
- type ENoEmpty tag = ('Text "Attempted to derive generic traverse for the void data type" :$$: 'Text "To override, implement genericTraverseV1 on:") :$$: (('Text "instance GenericTraverse (" :<>: 'ShowType tag) :<>: 'Text ")")
- class GTraverseC tag cd cc (si :: Natural) 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. 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.
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.
genericTraverseAction Source #
:: 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
type ENoEmpty tag = ('Text "Attempted to derive generic traverse for the void data type" :$$: 'Text "To override, implement genericTraverseV1 on:") :$$: (('Text "instance GenericTraverse (" :<>: 'ShowType tag) :<>: 'Text ")") Source #
class GTraverseC tag cd cc (si :: Natural) gf where Source #
gTraverseC :: GenericTraverseF tag (gf p) Source #
Instances
Applicative (GenericTraverseF tag) => GTraverseC (tag :: k1) (cd :: k2) (cc :: k3) 0 (U1 :: k4 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor gTraverseC :: forall (p :: k30). GenericTraverseF tag (U1 p) Source # | |
(Applicative (GenericTraverseF tag), GTraverseC tag cd cc si l, GTraverseC tag cd cc (si + ProdArity r) r) => GTraverseC (tag :: k1) (cd :: k2) (cc :: k3) si (l :*: r :: Type -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor 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 (tag :: k1) (cd :: k3) (cc :: k2) si (S1 cs (Rec0 a) :: k4 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor gTraverseC :: forall (p :: k30). GenericTraverseF tag (S1 cs (Rec0 a) p) Source # |