packages feed

lens-labels 0.2.0.3 → 0.3.0.0

raw patch · 3 files changed

+11/−30 lines, 3 filesdep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

- Lens.Labels: class HasLens f s t (x :: Symbol) a b | x s -> a, x t -> b, x s b -> t, x t a -> s
- Lens.Labels: instance (p Data.Type.Equality.~ (a -> f b), q Data.Type.Equality.~ (s -> f t), Lens.Labels.HasLens f s t x a b) => GHC.OverloadedLabels.IsLabel x (Lens.Labels.LensFn p q)
- Lens.Labels: lensOf :: HasLens f s t x a b => Proxy# x -> (a -> f b) -> s -> f t
- Lens.Labels: newtype Const a (b :: k) :: forall k. () => Type -> k -> Type
+ Lens.Labels: instance (GHC.Base.Functor f, p ~ (a -> f b), q ~ (s -> f t), s ~ t, a ~ b, Lens.Labels.HasLens' s x a) => GHC.OverloadedLabels.IsLabel x (Lens.Labels.LensFn p q)
+ Lens.Labels: newtype Const a (b :: k) :: forall k. () => * -> k -> *
- Lens.Labels: (&) :: () => a -> (a -> b) -> b
+ Lens.Labels: (&) :: () => a -> a -> b -> b
- Lens.Labels: LensFn :: (a -> b) -> LensFn a b
+ Lens.Labels: LensFn :: a -> b -> LensFn a b
- Lens.Labels: class HasLens f s s x a a => HasLens' f s x a | x s -> a
+ Lens.Labels: class HasLens' s (x :: Symbol) a | s x -> a
- Lens.Labels: lensOf' :: HasLens' f s x a => Proxy# x -> (a -> f a) -> s -> f s
+ Lens.Labels: lensOf' :: (HasLens' s x a, Functor f) => Proxy# x -> (a -> f a) -> s -> f s

Files

Changelog.md view
@@ -1,7 +1,7 @@ # Changelog for `lens-labels` -## v0.2.0.3-- Add support for ghc-8.6.+## v0.3.0.0+- Simplify instances to make them more readable. (#208)  ## v0.2.0.2 - Bump the lower bound on `base` to indicate we require `ghc>=8.0`.
lens-labels.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 19aca613bc07ce1ad3bc1d252a60d4925d35d8114ea296147ee787cfb4ed25d2+-- hash: a0dd443748f8ccf22bcc1fa41b5d15edbecd391dc7b0a380d43a87e39fcde4f9  name:           lens-labels-version:        0.2.0.3+version:        0.3.0.0 synopsis:       Integration of lenses with OverloadedLabels. description:    Provides a framework to integrate lenses with GHC's OverloadedLabels extension. category:       Data@@ -36,7 +36,7 @@   hs-source-dirs:       src   build-depends:-      base >=4.9 && <4.13+      base >=4.9 && <4.12     , ghc-prim >=0.4 && <0.6     , profunctors >=5.2     , tagged >=0.8
src/Lens/Labels.hs view
@@ -35,7 +35,6 @@     Lens,     Lens',     -- * HasLens-    HasLens(..),     Proxy#,     proxy#,     HasLens'(..),@@ -73,36 +72,18 @@ type Lens s t a b = forall f . Functor f => LensLike f s t a b type Lens' s a = Lens s s a a --- | A type class for lens fields.-class HasLens f s t (x :: Symbol) a b-        | x s -> a, x t -> b, x s b -> t, x t a -> s where-    lensOf :: Proxy# x -> (a -> f b) -> s -> f t- instance-    (p ~ (a -> f b), q ~ (s -> f t), HasLens f s t x a b)+    (Functor f, p ~ (a -> f b), q ~ (s -> f t), s ~ t, a ~ b, HasLens' s x a)     => IsLabel x (LensFn p q) where #if __GLASGOW_HASKELL__ >= 802-    fromLabel = LensFn $ lensOf (proxy# :: Proxy# x)+    fromLabel = LensFn $ lensOf' (proxy# :: Proxy# x) #else-    fromLabel p = LensFn $ lensOf p+    fromLabel p = LensFn $ lensOf' p #endif --- | A type class for lens fields of monomorphic types (i.e., where the lens--- doesn't change the outer type).------ This class can be used to simplify instance declarations and type--- errors, by "forwarding" 'HasLens' to simpler instances.  For example:------ @---     instance (HasLens' f Foo x a, a ~ b) => HasLens f Foo Foo x a b where---         where lensOf = lensOf'---     instance Functor f => HasLens' f Foo "a" Int where ...---     instance Functor f => HasLens' f Foo "b" Double where ...---     instance Functor f => HasLens' f Foo "c" [Float]  where ...---     ...--- @-class HasLens f s s x a a => HasLens' f s x a | x s -> a where-    lensOf' :: Proxy# x -> (a -> f a) -> s -> f s+-- | A type class for lens fields.+class HasLens' s (x :: Symbol) a | s x -> a where+    lensOf' :: Functor f => Proxy# x -> (a -> f a) -> s -> f s  type ASetter s t a b = LensLike Identity s t a b