Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Generic.Data.Function.Traverse.Sum
Description
traverse
over generic sum types.
Disambiguates constructors by prepending sum tags.
Note that the sum tag approach has efficiency limitations. You may design a constructor disambiguation schema which permits "incrementally" parsing, rather than parsing some whole thing then comparing to each option, which will be faster. If you wish to perform such sum tag handling yourself, but still want the free generics, Generic.Data.FOnCstr can do this for you.
Documentation
class GTraverseSum tag sumtag gf where Source #
Methods
gTraverseSum :: ParseCstrTo sumtag pt -> (String -> GenericTraverseF tag pt) -> (forall a. String -> GenericTraverseF tag a) -> (pt -> pt -> Bool) -> GenericTraverseF tag (gf p) Source #
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 # |
class GTraverseCSum tag sumtag (dtName :: Symbol) gf where Source #
Methods
gTraverseCSum :: ParseCstrTo sumtag pt -> (pt -> pt -> Bool) -> pt -> GenericTraverseF tag (gf p) Source #
Instances
(Alternative (GenericTraverseF tag), GTraverseCSum tag sumtag dtName l, GTraverseCSum tag sumtag dtName r) => GTraverseCSum (tag :: k1) (sumtag :: k2) dtName (l :+: r :: k3 -> Type) Source # | Combine constructor options with |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseCSum :: forall pt (p :: k20). ParseCstrTo sumtag pt -> (pt -> pt -> Bool) -> pt -> GenericTraverseF tag ((l :+: r) p) Source # | |
(Alternative (GenericTraverseF tag), GTraverseC tag dtName cstrName 0 gf, ReifyCstrParseResult sumtag cstrParsed, ForceGCParse dtName cstr (ParseCstr sumtag cstrName) ~ cstrParsed) => GTraverseCSum (tag :: k1) (sumtag :: k3) dtName (C1 ('MetaCons cstrName _mc2 _mc3) gf :: k2 -> Type) Source # | |
Defined in Generic.Data.Function.Traverse.Sum Methods gTraverseCSum :: forall pt (p :: k20). ParseCstrTo sumtag pt -> (pt -> pt -> Bool) -> pt -> GenericTraverseF tag (C1 ('MetaCons cstrName _mc2 _mc3) gf p) Source # |