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
- 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 :: Symbol) (cc :: Symbol) (si :: Natural) gf where
- gTraverseC :: GenericTraverseF tag (gf p)
- type family ProdArity (f :: Type -> Type) :: Natural where ...
- class ReifyMaybeSymbol (mstr :: Maybe Symbol) 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.
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
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 :: Symbol) (cc :: Symbol) (si :: Natural) gf where Source #
Methods
gTraverseC :: GenericTraverseF tag (gf p) Source #
Instances
Applicative (GenericTraverseF tag) => GTraverseC (tag :: k1) cd cc 0 (U1 :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods gTraverseC :: forall (p :: k10). GenericTraverseF tag (U1 p) Source # | |
(Applicative (GenericTraverseF tag), GTraverseC tag cd cc si l, GTraverseC tag cd cc (si + ProdArity r) r) => GTraverseC (tag :: k) cd cc si (l :*: r :: Type -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods gTraverseC :: forall (p :: k1). GenericTraverseF tag ((l :*: r) p) Source # | |
(GenericTraverse tag, GenericTraverseC tag a, Functor (GenericTraverseF tag), KnownNat si, ReifyMaybeSymbol mSelName, KnownSymbol cc, KnownSymbol cd) => GTraverseC (tag :: k1) cd cc si (S1 ('MetaSel mSelName _ms2 _ms3 _ms4) (Rec0 a) :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods gTraverseC :: forall (p :: k10). GenericTraverseF tag (S1 ('MetaSel mSelName _ms2 _ms3 _ms4) (Rec0 a) p) Source # |
class ReifyMaybeSymbol (mstr :: Maybe Symbol) where Source #
Methods
Instances
ReifyMaybeSymbol ('Nothing :: Maybe Symbol) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods | |
KnownSymbol str => ReifyMaybeSymbol ('Just str) Source # | |
Defined in Generic.Data.Function.Traverse.Constructor Methods |