vinyl 0.12.1 → 0.12.2
raw patch · 8 files changed
+59/−15 lines, 8 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Vinyl.Lens: rsubset :: forall rs ss f g record is. (RecSubset record (rs :: [k]) (ss :: [k]) is, Functor g, RecSubsetFCtx record f) => (record f rs -> g (record f rs)) -> record f ss -> g (record f ss)
+ Data.Vinyl.Lens: rsubset :: forall k rs ss f g record is. (RecSubset record (rs :: [k]) (ss :: [k]) is, Functor g, RecSubsetFCtx record f) => (record f rs -> g (record f rs)) -> record f ss -> g (record f ss)
- Data.Vinyl.Recursive: rpureConstrained :: forall c (f :: u -> *) proxy ts. (AllConstrained c ts, RecApplicative ts) => proxy c -> (forall a. c a => f a) -> Rec f ts
+ Data.Vinyl.Recursive: rpureConstrained :: forall u c (f :: u -> *) proxy ts. (AllConstrained c ts, RecApplicative ts) => proxy c -> (forall a. c a => f a) -> Rec f ts
- Data.Vinyl.SRec: sput :: forall (f :: u -> *) (t :: u) (ts :: [u]). (FieldOffset f ts t, Storable (Rec f ts), AllConstrained (FieldOffset f ts) ts) => f t -> SRec2 f f ts -> SRec2 f f ts
+ Data.Vinyl.SRec: sput :: forall u (f :: u -> *) (t :: u) (ts :: [u]). (FieldOffset f ts t, Storable (Rec f ts), AllConstrained (FieldOffset f ts) ts) => f t -> SRec2 f f ts -> SRec2 f f ts
- Data.Vinyl.SRec: srecGetSubset :: forall (ss :: [u]) (rs :: [u]) (f :: u -> *). (RPureConstrained (FieldOffset f ss) rs, RPureConstrained (FieldOffset f rs) rs, RFoldMap rs, RMap rs, RApply rs, Storable (Rec f rs)) => SRec2 f f ss -> SRec2 f f rs
+ Data.Vinyl.SRec: srecGetSubset :: forall u (ss :: [u]) (rs :: [u]) (f :: u -> *). (RPureConstrained (FieldOffset f ss) rs, RPureConstrained (FieldOffset f rs) rs, RFoldMap rs, RMap rs, RApply rs, Storable (Rec f rs)) => SRec2 f f ss -> SRec2 f f rs
- Data.Vinyl.SRec: srecSetSubset :: forall (f :: u -> *) (ss :: [u]) (rs :: [u]). (rs ⊆ ss, RPureConstrained (FieldOffset f ss) rs, RPureConstrained (FieldOffset f rs) rs, RFoldMap rs, RMap rs, RApply rs, Storable (Rec f ss)) => SRec2 f f ss -> SRec2 f f rs -> SRec2 f f ss
+ Data.Vinyl.SRec: srecSetSubset :: forall u (f :: u -> *) (ss :: [u]) (rs :: [u]). (rs ⊆ ss, RPureConstrained (FieldOffset f ss) rs, RPureConstrained (FieldOffset f rs) rs, RFoldMap rs, RMap rs, RApply rs, Storable (Rec f ss)) => SRec2 f f ss -> SRec2 f f rs -> SRec2 f f ss
Files
- CHANGELOG.md +5/−0
- Data/Vinyl/Lens.hs +9/−1
- Data/Vinyl/Recursive.hs +9/−1
- Data/Vinyl/SRec.hs +10/−3
- Data/Vinyl/Tutorial/Overview.hs +1/−1
- Data/Vinyl/TypeLevel.hs +11/−0
- tests/Intro.lhs +5/−0
- vinyl.cabal +9/−9
CHANGELOG.md view
@@ -1,4 +1,9 @@+# 0.12.2++- GHC 8.10.1 support+ # 0.12.0+ - GHC 8.8.1 support. Class type signatures were changed to remove explicit kind variables. This is to simplify the use of `TypeApplications` which changed with GHC 8.8.1 to require explicit application to those kind variables. Leaving them out of the class definitions preserves existing usage of `TypeApplications`. Thanks to Justin Le (@mstksg). # 0.11.0
Data/Vinyl/Lens.hs view
@@ -11,6 +11,11 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ < 806+{-# LANGUAGE TypeInType #-}+#endif+ -- | Lenses into record fields. module Data.Vinyl.Lens ( RecElem(..)@@ -32,6 +37,9 @@ import Data.Vinyl.Core import Data.Vinyl.Functor import Data.Vinyl.TypeLevel+#if __GLASGOW_HASKELL__ < 806+import Data.Kind+#endif -- | The presence of a field in a record is witnessed by a lens into -- its value. The fifth parameter to 'RecElem', @i@, is there to help@@ -176,7 +184,7 @@ -- | A lens into a slice of the larger record. This is 'rsubsetC' with -- the type arguments reordered for more convenient usage with -- @TypeApplications@.-rsubset :: forall rs ss f g record is.+rsubset :: forall k rs ss f g record is. (RecSubset record (rs :: [k]) (ss :: [k]) is, Functor g, RecSubsetFCtx record f) => (record f rs -> g (record f rs)) -> record f ss -> g (record f ss)
Data/Vinyl/Recursive.hs view
@@ -6,11 +6,19 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ < 806+{-# LANGUAGE TypeInType #-}+#endif+ -- | Recursive definitions of various core vinyl functions. These are -- simple definitions that put less strain on the compiler. They are -- expected to have slower run times, but faster compile times than -- the definitions in "Data.Vinyl.Core". module Data.Vinyl.Recursive where+#if __GLASGOW_HASKELL__ < 806+import Data.Kind+#endif import Data.Proxy (Proxy(..)) import Data.Vinyl.Core (rpure, RecApplicative, Rec(..), Dict(..)) import Data.Vinyl.Functor (Compose(..), (:.), Lift(..), Const(..))@@ -139,7 +147,7 @@ -- | Build a record whose elements are derived solely from a -- constraint satisfied by each.-rpureConstrained :: forall c (f :: u -> *) proxy ts.+rpureConstrained :: forall u c (f :: u -> *) proxy ts. (AllConstrained c ts, RecApplicative ts) => proxy c -> (forall a. c a => f a) -> Rec f ts rpureConstrained _ f = go (rpure Proxy)
Data/Vinyl/SRec.hs view
@@ -28,6 +28,7 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}@@ -44,6 +45,9 @@ {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE UndecidableSuperClasses #-}+#if __GLASGOW_HASKELL__ < 806+{-# LANGUAGE TypeInType #-}+#endif -- We get warnings about incomplete patterns on various class -- instances.@@ -60,6 +64,9 @@ , peekField, pokeField ) where import Data.Coerce (coerce)+#if __GLASGOW_HASKELL__ < 806+import Data.Kind+#endif import Data.Vinyl.Core import Data.Vinyl.Functor (Lift(..), Compose(..), type (:.), ElField) import Data.Vinyl.Lens (RecElem(..), RecSubset(..), type (⊆), RecElemFCtx)@@ -219,7 +226,7 @@ dst <$ copyBytes dst' src' n -- | Set a field.-sput :: forall (f :: u -> *) (t :: u) (ts :: [u]).+sput :: forall u (f :: u -> *) (t :: u) (ts :: [u]). ( FieldOffset f ts t , Storable (Rec f ts) , AllConstrained (FieldOffset f ts) ts)@@ -296,7 +303,7 @@ {-# INLINE rputC #-} -- | Get a subset of a record's fields.-srecGetSubset :: forall (ss :: [u]) (rs :: [u]) (f :: u -> *).+srecGetSubset :: forall u (ss :: [u]) (rs :: [u]) (f :: u -> *). (RPureConstrained (FieldOffset f ss) rs, RPureConstrained (FieldOffset f rs) rs, RFoldMap rs, RMap rs, RApply rs,@@ -334,7 +341,7 @@ type Poker f = Lift (->) f TaggedIO -- | Set a subset of a record's fields.-srecSetSubset :: forall (f :: u -> *) (ss :: [u]) (rs :: [u]).+srecSetSubset :: forall u (f :: u -> *) (ss :: [u]) (rs :: [u]). (rs ⊆ ss, RPureConstrained (FieldOffset f ss) rs, RPureConstrained (FieldOffset f rs) rs,
Data/Vinyl/Tutorial/Overview.hs view
@@ -157,7 +157,7 @@ The subtyping relationship between record types is expressed with the '<:' constraint; so, 'rcast' is of the following type: -> rcast :: r1 <: r2 => Rec f r1 -> Rec f r2+> rcast :: r1 <: r2 => Rec f r2 -> Rec f r1 Also provided is a "≅" constraint which indicates record congruence (that is, two record types differ only in the order of their fields).
Data/Vinyl/TypeLevel.hs view
@@ -11,10 +11,21 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeFamilyDependencies #-} {-# LANGUAGE TypeOperators #-}+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ < 806+{-# LANGUAGE TypeInType #-}+#endif+#if __GLASGOW_HASKELL__ >= 810+{-# LANGUAGE UndecidableInstances #-}+#endif module Data.Vinyl.TypeLevel where +#if __GLASGOW_HASKELL__ < 806+import Data.Kind+#else import GHC.Exts+#endif import GHC.Types (Type) -- | A mere approximation of the natural numbers. And their image as lifted by
tests/Intro.lhs view
@@ -21,6 +21,11 @@ > {-# LANGUAGE FlexibleContexts, FlexibleInstances, NoMonomorphismRestriction #-} > {-# LANGUAGE GADTs, TypeSynonymInstances, TemplateHaskell, StandaloneDeriving #-} > {-# LANGUAGE TypeApplications #-}+> {-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 810+> {-# LANGUAGE StandaloneKindSignatures #-}+#endif+ > module Intro where > import Data.Vinyl > import Data.Vinyl.Functor
vinyl.cabal view
@@ -1,5 +1,5 @@ name: vinyl-version: 0.12.1+version: 0.12.2 synopsis: Extensible Records -- description: license: MIT@@ -12,7 +12,7 @@ build-type: Simple cabal-version: >=1.10 extra-source-files: CHANGELOG.md-tested-with: GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.2+tested-with: GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1 description: Extensible records for Haskell with lenses. @@ -38,7 +38,7 @@ , Data.Vinyl.Syntax , Data.Vinyl.Tutorial.Overview , Data.Vinyl.XRec- build-depends: base >=4.7 && <= 5,+ build-depends: base >= 4.11 && <= 5, ghc-prim, array default-language: Haskell2010@@ -49,7 +49,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: benchmarks main-is: StorableBench.hs- build-depends: base >= 4.7 && <= 5,+ build-depends: base, vector, criterion, vinyl,@@ -65,7 +65,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: benchmarks main-is: EqualityBench.hs- build-depends: base >= 4.7 && <= 5, criterion, vinyl+ build-depends: base, criterion, vinyl ghc-options: -O2 default-language: Haskell2010 @@ -73,7 +73,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: benchmarks main-is: AccessorsBench.hs- build-depends: base >= 4.7 && <= 5, criterion, tagged, vinyl, microlens+ build-depends: base, criterion, tagged, vinyl, microlens ghc-options: -O2 default-language: Haskell2010 @@ -81,7 +81,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: benchmarks main-is: AsABench.hs- build-depends: base >= 4.7 && <= 5, criterion, vinyl+ build-depends: base, criterion, vinyl ghc-options: -O2 default-language: Haskell2010 @@ -90,14 +90,14 @@ hs-source-dirs: tests other-modules: Intro main-is: doctests.hs- build-depends: base >= 4.7 && <= 5, lens, doctest >= 0.8, singletons >= 0.10, vinyl+ build-depends: base, lens, doctest >= 0.8, singletons >= 0.10, vinyl default-language: Haskell2010 test-suite aeson type: exitcode-stdio-1.0 hs-source-dirs: tests main-is: Aeson.hs- build-depends: base >= 4.7 && <= 5, hspec, aeson, text, mtl, vinyl,+ build-depends: base, hspec, aeson, text, mtl, vinyl, vector, unordered-containers, lens, lens-aeson default-language: Haskell2010