packages feed

data-diverse-lens 3.0.0.2 → 3.1.0.0

raw patch · 4 files changed

+38/−34 lines, 4 filesdep +data-hasPVP ok

version bump matches the API change (PVP)

Dependencies added: data-has

API changes (from Hackage documentation)

- Data.Diverse.Lens.Many: class (HasItem' a s, Replaced a a s ~ s) => HasItem a s where {
- Data.Diverse.Lens.Many: class HasItem' a s
- Data.Diverse.Lens.Many: class (HasItemL' (l :: k) a s, ReplacedL l a a s ~ s) => HasItemL (l :: k) a s | s l -> a where {
- Data.Diverse.Lens.Many: class HasItemL' (l :: k) a s | s l -> a
- Data.Diverse.Lens.Many: class (HasItemN' (n :: Nat) a s, ReplacedN n a a s ~ s) => HasItemN (n :: Nat) a s | s n -> a where {
- Data.Diverse.Lens.Many: class HasItemN' (n :: Nat) a s | s n -> a
- Data.Diverse.Lens.Many: class HasItemL l (Tagged l a) s => HasItemTag (l :: k) a s
- Data.Diverse.Lens.Many: class HasItemL' l (Tagged l a) s => HasItemTag' (l :: k) a s
- Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.MemberAt n x xs => Data.Diverse.Lens.Many.HasItemN n x (Data.Diverse.Many.Internal.Many xs)
- Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.MemberAt n x xs => Data.Diverse.Lens.Many.HasItemN' n x (Data.Diverse.Many.Internal.Many xs)
- Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.UniqueMember x xs => Data.Diverse.Lens.Many.HasItem x (Data.Diverse.Many.Internal.Many xs)
- Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.UniqueMember x xs => Data.Diverse.Lens.Many.HasItem' x (Data.Diverse.Many.Internal.Many xs)
- Data.Diverse.Lens.Many: instance forall k (l :: k) (xs :: [*]) x. (Data.Diverse.TypeLevel.UniqueLabelMember l xs, x ~ Data.Diverse.TypeLevel.KindAtLabel l xs) => Data.Diverse.Lens.Many.HasItemL l x (Data.Diverse.Many.Internal.Many xs)
- Data.Diverse.Lens.Many: instance forall k (l :: k) (xs :: [*]) x. (Data.Diverse.TypeLevel.UniqueLabelMember l xs, x ~ Data.Diverse.TypeLevel.KindAtLabel l xs) => Data.Diverse.Lens.Many.HasItemL' l x (Data.Diverse.Many.Internal.Many xs)
- Data.Diverse.Lens.Many: instance forall k (l :: k) a s. Data.Diverse.Lens.Many.HasItemL l (Data.Tagged.Tagged l a) s => Data.Diverse.Lens.Many.HasItemTag l a s
- Data.Diverse.Lens.Many: instance forall k (l :: k) a s. Data.Diverse.Lens.Many.HasItemL' l (Data.Tagged.Tagged l a) s => Data.Diverse.Lens.Many.HasItemTag' l a s
+ Data.Diverse.Lens.Many: class (Has a s, Replaced a a s ~ s) => Had a s where {
+ Data.Diverse.Lens.Many: class (HasL (l :: k) a s, ReplacedL l a a s ~ s) => HadL (l :: k) a s | s l -> a where {
+ Data.Diverse.Lens.Many: class (HasN (n :: Nat) a s, ReplacedN n a a s ~ s) => HadN (n :: Nat) a s | s n -> a where {
+ Data.Diverse.Lens.Many: class HadL l (Tagged l a) s => HadTag (l :: k) a s
+ Data.Diverse.Lens.Many: class Has a t
+ Data.Diverse.Lens.Many: class HasL (l :: k) a s | s l -> a
+ Data.Diverse.Lens.Many: class HasN (n :: Nat) a s | s n -> a
+ Data.Diverse.Lens.Many: class HasL l (Tagged l a) s => HasTag (l :: k) a s
+ Data.Diverse.Lens.Many: getter :: Has a t => t -> a
+ Data.Diverse.Lens.Many: hasLens :: Has a t => Lens t a
+ Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.MemberAt n x xs => Data.Diverse.Lens.Many.HadN n x (Data.Diverse.Many.Internal.Many xs)
+ Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.MemberAt n x xs => Data.Diverse.Lens.Many.HasN n x (Data.Diverse.Many.Internal.Many xs)
+ Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.UniqueMember x xs => Data.Diverse.Lens.Many.Had x (Data.Diverse.Many.Internal.Many xs)
+ Data.Diverse.Lens.Many: instance Data.Diverse.TypeLevel.UniqueMember x xs => Data.Has.Has x (Data.Diverse.Many.Internal.Many xs)
+ Data.Diverse.Lens.Many: instance forall k (l :: k) (xs :: [*]) x. (Data.Diverse.TypeLevel.UniqueLabelMember l xs, x ~ Data.Diverse.TypeLevel.KindAtLabel l xs) => Data.Diverse.Lens.Many.HadL l x (Data.Diverse.Many.Internal.Many xs)
+ Data.Diverse.Lens.Many: instance forall k (l :: k) (xs :: [*]) x. (Data.Diverse.TypeLevel.UniqueLabelMember l xs, x ~ Data.Diverse.TypeLevel.KindAtLabel l xs) => Data.Diverse.Lens.Many.HasL l x (Data.Diverse.Many.Internal.Many xs)
+ Data.Diverse.Lens.Many: instance forall k (l :: k) a s. Data.Diverse.Lens.Many.HadL l (Data.Tagged.Tagged l a) s => Data.Diverse.Lens.Many.HadTag l a s
+ Data.Diverse.Lens.Many: instance forall k (l :: k) a s. Data.Diverse.Lens.Many.HasL l (Data.Tagged.Tagged l a) s => Data.Diverse.Lens.Many.HasTag l a s
+ Data.Diverse.Lens.Many: modifier :: Has a t => (a -> a) -> t -> t
- Data.Diverse.Lens.Many: item :: HasItem a s => Lens s (Replaced a b s) a b
+ Data.Diverse.Lens.Many: item :: Had a s => Lens s (Replaced a b s) a b
- Data.Diverse.Lens.Many: item' :: (HasItem' a s, (HasType a s)) => Lens' s a
+ Data.Diverse.Lens.Many: item' :: Has a s => Lens' s a
- Data.Diverse.Lens.Many: itemL :: HasItemL l a s => Lens s (ReplacedL l a b s) a b
+ Data.Diverse.Lens.Many: itemL :: HadL l a s => Lens s (ReplacedL l a b s) a b
- Data.Diverse.Lens.Many: itemL' :: HasItemL' l a s => Lens' s a
+ Data.Diverse.Lens.Many: itemL' :: HasL l a s => Lens' s a
- Data.Diverse.Lens.Many: itemN :: (HasItemN n a s, (HasPosition n s (ReplacedN n a b s) a b)) => Lens s (ReplacedN n a b s) a b
+ Data.Diverse.Lens.Many: itemN :: (HadN n a s, (HasPosition n s (ReplacedN n a b s) a b)) => Lens s (ReplacedN n a b s) a b
- Data.Diverse.Lens.Many: itemN' :: HasItemN' n a s => Lens' s a
+ Data.Diverse.Lens.Many: itemN' :: HasN n a s => Lens' s a
- Data.Diverse.Lens.Many: itemTag :: HasItemTag l a s => Lens s (ReplacedL l (Tagged l a) (Tagged l b) s) a b
+ Data.Diverse.Lens.Many: itemTag :: HadTag l a s => Lens s (ReplacedL l (Tagged l a) (Tagged l b) s) a b
- Data.Diverse.Lens.Many: itemTag' :: HasItemTag' l a s => Lens' s a
+ Data.Diverse.Lens.Many: itemTag' :: HasTag l a s => Lens' s a
- Data.Diverse.Profunctor.Many: type Itemized a b s t = (HasItem a s, t ~ Replaced a b s)
+ Data.Diverse.Profunctor.Many: type Itemized a b s t = (Had a s, t ~ Replaced a b s)

Files

README.md view
@@ -7,6 +7,9 @@  # Changelog +* 3.1.0.0+  - Replaced `HasItem` with `Data.Has`.+ * 3.0.0.2   - Fixed haddock. 
data-diverse-lens.cabal view
@@ -1,5 +1,5 @@ name:                data-diverse-lens-version:             3.0.0.2+version:             3.1.0.0 synopsis:            Isos & Lens for Data.Diverse.Many and Prisms for Data.Diverse.Which description:         Isos & Lens for Data.Diverse.Many and Prisms for Data.Diverse.Which                      Refer to [ManySpec.hs](https://github.com/louispan/data-diverse-lens/blob/master/test/Data/Diverse/Lens/ManySpec.hs) and [WhichSpec.hs](https://github.com/louispan/data-diverse-lens/blob/master/test/Data/Diverse/Lens/WhichSpec.hs) for example usages.@@ -29,6 +29,7 @@                      , profunctors >= 5.2                      , generic-lens >= 0.5.0.0                      , lens >= 4+                     , data-has >= 0.3   ghc-options:         -Wall   default-language:    Haskell2010 
src/Data/Diverse/Lens/Many.hs view
@@ -1,3 +1,5 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE DataKinds #-}@@ -21,15 +23,16 @@      -- * Single field     -- ** Lens for a single field-    , HasItem(..)-    , HasItem'(..)-    , HasItemL(..)-    , HasItemL'(..)-    , HasItemTag(..)-    , HasItemTag'(..)+    , Has(..)+    , item'+    , Had(..)+    , HasL(..)+    , HadL(..)+    , HasTag(..)+    , HadTag(..)     -- , genericItemTag-    , HasItemN(..)-    , HasItemN'(..)+    , HasN(..)+    , HadN(..)      -- * Multiple fields     -- ** Lens for multiple fields@@ -51,6 +54,7 @@ import Data.Diverse.Many import Data.Diverse.TypeLevel import Data.Generics.Product+import Data.Has import Data.Kind import Data.Tagged import GHC.TypeLits@@ -65,29 +69,25 @@  ----------------------------------------------------------------------- --- | 'grab' ('view' 'item') and 'replace'' ('set' 'item'') in 'Lens'' form.+-- | Convient name for 'hasLens' to be consistent with 'Had' typeclass. -- -- @ -- let x = (5 :: Int) './' False './' \'X' './' Just \'O' './' 'nil' -- x '^.' 'item'' \@Int \`shouldBe` 5 -- (x '&' 'item'' \@Int .~ 6) \`shouldBe` (6 :: Int) './' False './' \'X' './' Just \'O' './' 'nil' -- @-class HasItem' a s where-    item' :: Lens' s a--    -- | Make it easy to create an instance of 'item' using 'Data.Generics.Product.Typed'-    default item' :: (HasType a s) => Lens' s a-    item' = typed+item' :: Has a s => Lens' s a+item' = hasLens -instance UniqueMember x xs => HasItem' x (Many xs) where-    item' = lens grab replace'+instance UniqueMember x xs => Has x (Many xs) where+    hasLens = lens grab replace'  -- | Polymorphic version of 'item''-class (HasItem' a s, Replaced a a s ~ s) => HasItem a s where+class (Has a s, Replaced a a s ~ s) => Had a s where     type Replaced a b s     item :: Lens s (Replaced a b s) a b -instance (UniqueMember x xs) => HasItem x (Many xs) where+instance (UniqueMember x xs) => Had x (Many xs) where     type Replaced x b (Many xs) = Many (Replace x b xs)     item = lens grab (replace @x) @@ -101,16 +101,16 @@ -- -- A default implementation using generics is not provided as it make GHC think that @l@ must be type @Symbol@ -- when @l@ can actually be any kind.--- Create instances of 'HasItemL'' using "Data.Generics.Product.Fields" as follows:+-- Create instances of 'HasL' using "Data.Generics.Product.Fields" as follows: -- @ -- instance HasField' l Foo a => itemL' l a Foo where --     itemL' = field @l -- default itemL' :: forall (l :: Symbol) a s. (HasField' l s a) => Lens' s a -- itemL' = field @l-class HasItemL' (l :: k) a s | s l -> a where+class HasL (l :: k) a s | s l -> a where     itemL' :: Lens' s a -instance (UniqueLabelMember l xs, x ~ KindAtLabel l xs) => HasItemL' l x (Many xs) where+instance (UniqueLabelMember l xs, x ~ KindAtLabel l xs) => HasL l x (Many xs) where     itemL' = lens (grabL @l) (replaceL' @l)  -- | Polymorphic version of 'itemL''@@ -119,28 +119,28 @@ -- let x = (5 :: Int) './' Tagged @Foo False './' Tagged \@Bar \'X' './' 'nil' -- (x '&' 'itemL' \@Foo '.~' \"foo") \`shouldBe` (5 :: Int) './' \"foo" './' Tagged \@Bar \'X' './' 'nil' -- @-class (HasItemL' (l :: k) a s, ReplacedL l a a s ~ s) => HasItemL (l :: k) a s | s l -> a where+class (HasL (l :: k) a s, ReplacedL l a a s ~ s) => HadL (l :: k) a s | s l -> a where     type ReplacedL l a b s     itemL :: Lens s (ReplacedL l a b s) a b -instance (UniqueLabelMember l xs, x ~ KindAtLabel l xs) => HasItemL l x (Many xs) where+instance (UniqueLabelMember l xs, x ~ KindAtLabel l xs) => HadL l x (Many xs) where     type ReplacedL l x b (Many xs) = Many (Replace (KindAtLabel l xs) b xs)     itemL = lens (grabL @l) (replaceL @l)  -- | Variation of 'itemL'' that automatically tags and untags a Tagged field. -- @-class HasItemL' l (Tagged l a) s => HasItemTag' (l :: k) a s where+class HasL l (Tagged l a) s => HasTag (l :: k) a s where     itemTag' :: Lens' s a -instance HasItemL' l (Tagged l a) s => HasItemTag' (l :: k) a s where+instance HasL l (Tagged l a) s => HasTag (l :: k) a s where     itemTag' = itemL' @l . iso unTagged Tagged  -- | Polymorphic version of 'itemTag'' -- @-class HasItemL l (Tagged l a) s => HasItemTag (l :: k) a s where+class HadL l (Tagged l a) s => HadTag (l :: k) a s where     itemTag :: Lens s (ReplacedL l (Tagged l a) (Tagged l b) s) a b -instance HasItemL l (Tagged l a) s => HasItemTag (l :: k) a s where+instance HadL l (Tagged l a) s => HadTag (l :: k) a s where     itemTag = itemL @l . iso unTagged (Tagged @l)  -- | 'grabN' ('view' 'item') and 'replaceN'' ('set' 'item'') in 'Lens'' form.@@ -150,14 +150,14 @@ -- x '^.' 'itemN'' \@0 \`shouldBe` 5 -- (x '&' 'itemN'' \@0 '.~' 6) \`shouldBe` (6 :: Int) './' False './' \'X' './' Just \'O' './' (6 :: Int) './' Just \'A' './' 'nil' -- @-class HasItemN' (n :: Nat) a s | s n -> a where+class HasN (n :: Nat) a s | s n -> a where     itemN' :: Lens' s a -instance (MemberAt n x xs) => HasItemN' n x (Many xs) where+instance (MemberAt n x xs) => HasN n x (Many xs) where     itemN' = lens (grabN @n) (replaceN' @n)  -- | Polymorphic version of 'itemN''-class (HasItemN' (n :: Nat) a s, ReplacedN n a a s ~ s) => HasItemN (n :: Nat) a s | s n -> a where+class (HasN (n :: Nat) a s, ReplacedN n a a s ~ s) => HadN (n :: Nat) a s | s n -> a where     type ReplacedN n a b s     itemN :: Lens s (ReplacedN n a b s) a b @@ -166,7 +166,7 @@     itemN = position @n  instance (MemberAt n x xs)-  => HasItemN n x (Many xs) where+  => HadN n x (Many xs) where     type ReplacedN n x b (Many xs) = Many (ReplaceIndex n x b xs)     itemN = lens (grabN @n) (replaceN @n) 
src/Data/Diverse/Profunctor/Many.hs view
@@ -34,7 +34,7 @@  -- | A friendlier constraint synonym for 'itemized'. type Itemized a b s t =-    ( HasItem a s+    ( Had a s     , t ~ Replaced a b s     )