generic-data-functions 0.5.0 → 0.5.1
raw patch · 5 files changed
+24/−6 lines, 5 filesdep ~textPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: text
API changes (from Hackage documentation)
- Generic.Data.Function.Traverse.Sum: instance forall k1 k2 (tag :: k1) pt (cd :: GHC.Generics.Meta) (gf :: k2 -> GHC.Types.Type). (Generic.Data.Function.Traverse.Constructor.GenericTraverseC tag pt, GHC.Base.Alternative (Generic.Data.Function.Traverse.Constructor.GenericTraverseF tag), GHC.Base.Monad (Generic.Data.Function.Traverse.Constructor.GenericTraverseF tag), Generic.Data.Function.Traverse.Sum.GenericTraverseSum tag, Generic.Data.Function.Traverse.Sum.GTraverseCSum tag cd gf, GHC.Generics.Datatype cd, Generic.Data.Function.Common.Generic.Meta.KnownSymbols (Generic.Data.Function.Common.Generic.Meta.CstrNames gf)) => Generic.Data.Function.Traverse.Sum.GTraverseSum tag (GHC.Generics.D1 cd gf)
+ Generic.Data.Function.Traverse.Constructor: 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 ")"
+ Generic.Data.Function.Traverse.Sum: instance forall k1 k2 (tag :: k1) (cd :: GHC.Generics.Meta) (gf :: k2 -> GHC.Types.Type). (GHC.Base.Alternative (Generic.Data.Function.Traverse.Constructor.GenericTraverseF tag), GHC.Base.Monad (Generic.Data.Function.Traverse.Constructor.GenericTraverseF tag), Generic.Data.Function.Traverse.Sum.GenericTraverseSum tag, Generic.Data.Function.Traverse.Sum.GTraverseCSum tag cd gf, GHC.Generics.Datatype cd, Generic.Data.Function.Common.Generic.Meta.KnownSymbols (Generic.Data.Function.Common.Generic.Meta.CstrNames gf)) => Generic.Data.Function.Traverse.Sum.GTraverseSum tag (GHC.Generics.D1 cd gf)
Files
- CHANGELOG.md +4/−0
- generic-data-functions.cabal +2/−2
- src/Generic/Data/Function/Common/Error.hs +1/−1
- src/Generic/Data/Function/Traverse/Constructor.hs +15/−1
- src/Generic/Data/Function/Traverse/Sum.hs +2/−2
CHANGELOG.md view
@@ -1,3 +1,7 @@+## 0.5.1 (2024-04-10)+* remove spurious constraint in Traverse.Sum (should be same semantics)+* bump text upper bound for GHC 9.8 compatibility+ ## 0.5.0 (2024-04-05) * Remove `SumOpts` type used for switching whether or not to permit "singleton sum types" for sum handlers. This was a type-level switch which changed
generic-data-functions.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: generic-data-functions-version: 0.5.0+version: 0.5.1 synopsis: Familiar functions lifted to generic data types description: Please see README.md. category: Data, Generics@@ -65,5 +65,5 @@ build-depends: base >=4.14 && <5 , contravariant >=1.5.5 && <1.6- , text >=1.2.5.0 && <2.1+ , text >=1.2.5.0 && <2.2 default-language: GHC2021
src/Generic/Data/Function/Common/Error.hs view
@@ -9,7 +9,7 @@ <> " got: "<>msgGot<>"\n" <> " but: "<>msgWhyBad<>"\n" <> "If you like, you can catch such errors during compilation.\n"- <> "See the generic-data-asserts package on Hackage."+ <> "See the generic-type-asserts package on Hackage." eNoEmpty :: String eNoEmpty = wrapE "empty data type" "disallowed"
src/Generic/Data/Function/Traverse/Constructor.hs view
@@ -15,7 +15,7 @@ import Data.Kind ( type Type, type Constraint ) import Generic.Data.Wrappers ( NoRec0, type ENoRec0, EmptyRec0 )-import GHC.TypeLits ( TypeError )+import GHC.TypeError ( TypeError, ErrorMessage(..) ) -- import Data.Monoid @@ -49,7 +49,21 @@ -- -- Defaults to 'error', but you may wrap it in your functor if it pleases. genericTraverseV1 :: GenericTraverseF tag (V1 p)+ -- NOTE: Prior to GHC 9.8, we can't default to a compile-time error here,+ -- due to TypeError limitations. From GHC 9.8, we can use Unsatisfiable.+ -- But I'm still not sure it works how I would like it to. Let's just stick+ -- with 'error' for now. One can always use generic-type-asserts.+ {-+ default genericTraverseV1+ :: Unsatisfiable (ENoEmpty tag) => GenericTraverseF tag (V1 p)+ genericTraverseV1 = unsatisfiable+ -} genericTraverseV1 = error eNoEmpty++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 ")" -- | 'traverse' over types with no fields in any constructor. instance GenericTraverse (NoRec0 (f :: Type -> Type)) where
src/Generic/Data/Function/Traverse/Sum.hs view
@@ -47,6 +47,7 @@ } class GTraverseSum tag gf where+ -- have to stuff pt constraint in here because we can't access pt externally gTraverseSum :: GenericTraverseC tag pt => PfxTagCfg pt -> GenericTraverseF tag (gf p)@@ -57,8 +58,7 @@ -- | Test all constructors of the given non-void data type; if they all fail, -- run a failure action and pass it all the constructors names in the type. instance- ( GenericTraverseC tag pt- , Alternative (GenericTraverseF tag)+ ( Alternative (GenericTraverseF tag) , Monad (GenericTraverseF tag) , GenericTraverseSum tag, GTraverseCSum tag cd gf , Datatype cd