vinyl 0.12.2 → 0.12.3
raw patch · 3 files changed
+13/−12 lines, 3 filesdep ~aesondep ~base
Dependency ranges changed: aeson, base
Files
- Data/Vinyl/Derived.hs +2/−2
- Data/Vinyl/Lens.hs +9/−8
- vinyl.cabal +2/−2
Data/Vinyl/Derived.hs view
@@ -92,14 +92,14 @@ rputf' :: forall l v v' record us us'. (HasField record l us us' v v', KnownSymbol l, RecElemFCtx record ElField) => Label l -> v' -> record ElField us -> record ElField us'-rputf' _ = rput' @(l:::v) . (Field :: v' -> ElField '(l,v'))+rputf' _ = rput' @_ @(l:::v) . (Field :: v' -> ElField '(l,v')) -- | Set a named field without changing its type. @rputf #foo 23@ sets -- the field named @#foo@ to @23@. rputf :: forall l v record us. (HasField record l us us v v, KnownSymbol l, RecElemFCtx record ElField) => Label l -> v -> record ElField us -> record ElField us-rputf _ = rput @(l:::v) . Field+rputf _ = rput @_ @(l:::v) . Field -- | A lens into a 'Rec' identified by a 'Label'. rlensfL' :: forall l v v' record g f us us'.
Data/Vinyl/Lens.hs view
@@ -46,7 +46,7 @@ -- the constraint solver realize that this is a decidable predicate -- with respect to the judgemental equality in @k@. class (i ~ RIndex r rs, NatToInt i)- => RecElem record r r' rs rs' (i :: Nat) | r r' rs i -> rs' where+ => RecElem (record :: (k -> *) -> [k] -> *) (r :: k) (r' :: k) (rs :: [k]) (rs' :: [k]) (i :: Nat) | r r' rs i -> rs' where -- | An opportunity for instances to generate constraints based on -- the functor parameter of records passed to class methods. type RecElemFCtx record (f :: k -> *) :: Constraint@@ -98,16 +98,16 @@ {-# INLINE rlensC #-} rgetC = getConst . rlensC Const {-# INLINE rgetC #-}- rputC y = getIdentity . rlensC @_ @r (\_ -> Identity y)+ rputC y = getIdentity . rlensC @_ @_ @r (\_ -> Identity y) {-# INLINE rputC #-} instance (RIndex r (s ': rs) ~ 'S i, RecElem Rec r r' rs rs' i) => RecElem Rec r r' (s ': rs) (s ': rs') ('S i) where rlensC f (x :& xs) = fmap (x :&) (rlensC f xs) {-# INLINE rlensC #-}- rgetC = getConst . rlensC @_ @r @r' Const+ rgetC = getConst . rlensC @_ @_ @r @r' Const {-# INLINE rgetC #-}- rputC y = getIdentity . rlensC @_ @r (\_ -> Identity y)+ rputC y = getIdentity . rlensC @_ @_ @r (\_ -> Identity y) {-# INLINE rputC #-} -- | The 'rgetC' field getter with the type arguments re-ordered for@@ -119,15 +119,16 @@ -- | The type-changing field setter 'rputC' with the type arguments -- re-ordered for more convenient usage with @TypeApplications@.-rput' :: forall r r' rs rs' record f. (RecElem record r r' rs rs' (RIndex r rs), RecElemFCtx record f)+rput' :: forall k (r :: k) (r' :: k) (rs :: [k]) (rs' :: [k]) record f+ . (RecElem record r r' rs rs' (RIndex r rs), RecElemFCtx record f) => f r' -> record f rs -> record f rs'-rput' = rputC @_ @r @r'+rput' = rputC @_ @_ @r @r' -- | Type-preserving field setter. This type is simpler to work with -- than that of 'rput''.-rput :: forall r rs record f. (RecElem record r r rs rs (RIndex r rs), RecElemFCtx record f)+rput :: forall k (r :: k) rs record f. (RecElem record r r rs rs (RIndex r rs), RecElemFCtx record f) => f r -> record f rs -> record f rs-rput = rput' @r+rput = rput' @_ @r -- | Type-changing field lens 'rlensC' with the type arguments -- re-ordered for more convenient usage with @TypeApplications@.
vinyl.cabal view
@@ -1,5 +1,5 @@ name: vinyl-version: 0.12.2+version: 0.12.3 synopsis: Extensible Records -- description: license: MIT@@ -97,7 +97,7 @@ type: exitcode-stdio-1.0 hs-source-dirs: tests main-is: Aeson.hs- build-depends: base, hspec, aeson, text, mtl, vinyl,+ build-depends: base, hspec, aeson >= 1.5.2, text, mtl, vinyl, vector, unordered-containers, lens, lens-aeson default-language: Haskell2010