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 +2/−2
- lens-labels.cabal +3/−3
- src/Lens/Labels.hs +6/−25
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