data-diverse 4.3.0.0 → 4.4.0.0
raw patch · 5 files changed
+31/−10 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.Diverse.TypeLevel: class Unconstrained a
- Data.Diverse.TypeLevel: instance forall k (a :: k). Data.Diverse.TypeLevel.Unconstrained a
+ Data.Diverse.TypeLevel: class C0 a
+ Data.Diverse.TypeLevel: class (c1 a, c2 a) => C2 c1 c2 a
+ Data.Diverse.TypeLevel: class (c1 a, c2 a, c3 a) => C3 c1 c2 c3 a
+ Data.Diverse.TypeLevel: class (c1 a, c2 a, c3 a, c4 a) => C4 c1 c2 c3 c4 a
+ Data.Diverse.TypeLevel: class (c1 a, c2 a, c3 a, c4 a, c5 a) => C5 c1 c2 c3 c4 c5 a
+ Data.Diverse.TypeLevel: class (c1 a, c2 a, c3 a, c4 a, c5 a, c6 a) => C6 c1 c2 c3 c4 c5 c6 a
+ Data.Diverse.TypeLevel: instance forall k (a :: k). Data.Diverse.TypeLevel.C0 a
+ Data.Diverse.TypeLevel: instance forall k (c1 :: k -> GHC.Types.Constraint) (a :: k) (c2 :: k -> GHC.Types.Constraint) (c3 :: k -> GHC.Types.Constraint) (c4 :: k -> GHC.Types.Constraint) (c5 :: k -> GHC.Types.Constraint) (c6 :: k -> GHC.Types.Constraint). (c1 a, c2 a, c3 a, c4 a, c5 a, c6 a) => Data.Diverse.TypeLevel.C6 c1 c2 c3 c4 c5 c6 a
+ Data.Diverse.TypeLevel: instance forall k (c1 :: k -> GHC.Types.Constraint) (a :: k) (c2 :: k -> GHC.Types.Constraint) (c3 :: k -> GHC.Types.Constraint) (c4 :: k -> GHC.Types.Constraint) (c5 :: k -> GHC.Types.Constraint). (c1 a, c2 a, c3 a, c4 a, c5 a) => Data.Diverse.TypeLevel.C5 c1 c2 c3 c4 c5 a
+ Data.Diverse.TypeLevel: instance forall k (c1 :: k -> GHC.Types.Constraint) (a :: k) (c2 :: k -> GHC.Types.Constraint) (c3 :: k -> GHC.Types.Constraint) (c4 :: k -> GHC.Types.Constraint). (c1 a, c2 a, c3 a, c4 a) => Data.Diverse.TypeLevel.C4 c1 c2 c3 c4 a
+ Data.Diverse.TypeLevel: instance forall k (c1 :: k -> GHC.Types.Constraint) (a :: k) (c2 :: k -> GHC.Types.Constraint) (c3 :: k -> GHC.Types.Constraint). (c1 a, c2 a, c3 a) => Data.Diverse.TypeLevel.C3 c1 c2 c3 a
+ Data.Diverse.TypeLevel: instance forall k (c1 :: k -> GHC.Types.Constraint) (a :: k) (c2 :: k -> GHC.Types.Constraint). (c1 a, c2 a) => Data.Diverse.TypeLevel.C2 c1 c2 a
Files
- README.md +6/−3
- data-diverse.cabal +1/−1
- src/Data/Diverse/TypeLevel.hs +20/−2
- test/Data/Diverse/ManySpec.hs +2/−2
- test/Data/Diverse/WhichSpec.hs +2/−2
README.md view
@@ -14,13 +14,16 @@ # Changelog +* 4.4.0.0+ - Renamed `Unconstrained` to `C0`. Added `C2`, `C3`, `C4`, `C5`, `C6`.+ * 4.3.0.0- - Renamed `Unconstrained` to `Unconstrained`+ - Renamed `NoConstraint` to `Unconstrained` * 4.2.0.0 - Added `CaseFunc1` to allow `afmap` of with `Functor`, etc. - `Which` is now also an instance of `AFoldable`.- - Added `Unconstrained` which is useful for `CaseFunc1` for unused constraints.+ - Added `NoConstraint` which is useful for `CaseFunc1` for unused constraints. - Added `definitely`. * 4.1.0.0@@ -41,7 +44,7 @@ - Removed `CanAppendUnique` (not useful). * 2.0.1.0- - Simplified type synonyms for Which. Added Reinterpreted constraint synonym.+ - Simplified type synonyms for `Which`. Added `Reinterpreted` constraint synonym. * 2.0.0.0 - Breaking change: the prime (xxx') version of functions are now consistently the simpler or non-polymorphic version.
data-diverse.cabal view
@@ -1,5 +1,5 @@ name: data-diverse-version: 4.3.0.0+version: 4.4.0.0 synopsis: Extensible records and polymorphic variants. description: "Data.Diverse.Many" is an extensible record for any size encoded efficiently as (Seq Any). "Data.Diverse.Which" is a polymorphic variant of possibilities encoded as (Int, Any).
src/Data/Diverse/TypeLevel.hs view
@@ -3,10 +3,12 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE KindSignatures #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeInType #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE UndecidableSuperClasses #-} module Data.Diverse.TypeLevel where @@ -176,5 +178,21 @@ -- https://hackage.haskell.org/package/vinyl-0.6.0/docs/Data-Vinyl-TypeLevel.html#t:AllConstrained -- | This is useful as a level function for @k@ in 'CaseFunc1'-instance Unconstrained a where-class Unconstrained a where+class C0 a where+instance C0 a where++-- UndecidableSuperInstances :(+class (c1 a, c2 a) => C2 c1 c2 a where+instance (c1 a, c2 a) => C2 c1 c2 a where++class (c1 a, c2 a, c3 a) => C3 c1 c2 c3 a where+instance (c1 a, c2 a, c3 a) => C3 c1 c2 c3 a where++class (c1 a, c2 a, c3 a, c4 a) => C4 c1 c2 c3 c4 a where+instance (c1 a, c2 a, c3 a, c4 a) => C4 c1 c2 c3 c4 a where++class (c1 a, c2 a, c3 a, c4 a, c5 a) => C5 c1 c2 c3 c4 c5 a where+instance (c1 a, c2 a, c3 a, c4 a, c5 a) => C5 c1 c2 c3 c4 c5 a where++class (c1 a, c2 a, c3 a, c4 a, c5 a, c6 a) => C6 c1 c2 c3 c4 c5 c6 a where+instance (c1 a, c2 a, c3 a, c4 a, c5 a, c6 a) => C6 c1 c2 c3 c4 c5 c6 a where
test/Data/Diverse/ManySpec.hs view
@@ -336,5 +336,5 @@ mz = (Just "5" :: Maybe String) ./ (["6"] :: [String]) ./ nil afmap (CaseFunc' @Num (+10)) x `shouldBe` y afmap (CaseFunc @Show @String show) x `shouldBe` z- afmap (CaseFunc1' @Unconstrained @Functor @Num (fmap (+10))) mx `shouldBe` my- afmap (CaseFunc1 @Unconstrained @Functor @Show @String (fmap show)) mx `shouldBe` mz+ afmap (CaseFunc1' @C0 @Functor @Num (fmap (+10))) mx `shouldBe` my+ afmap (CaseFunc1 @C0 @Functor @(C2 Show Read) @String (fmap show)) mx `shouldBe` mz
test/Data/Diverse/WhichSpec.hs view
@@ -282,5 +282,5 @@ mz = pickN @1 (Just "5" :: Maybe String) :: Which '[Maybe String, Maybe String, Maybe String] afmap (CaseFunc' @Num (+10)) x `shouldBe` y afmap (CaseFunc @Show @String show) x `shouldBe` z- afmap (CaseFunc1' @Unconstrained @Functor @Num (fmap (+10))) mx `shouldBe` my- afmap (CaseFunc1 @Unconstrained @Functor @Show @String (fmap show)) mx `shouldBe` mz+ afmap (CaseFunc1' @C0 @Functor @Num (fmap (+10))) mx `shouldBe` my+ afmap (CaseFunc1 @C0 @Functor @Show @String (fmap show)) mx `shouldBe` mz