lens-family 0.0.1 → 0.1.0
raw patch · 6 files changed
+33/−10 lines, 6 filesdep ~lens-family-corePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: lens-family-core
API changes (from Hackage documentation)
- Lens.Family2.Stock: type LensFamily a a' b b' = forall f. Functor f => LensFamily f a a' b b'
- Lens.Family2.Unchecked: type LensFamily a a' b b' = forall f. Functor f => LensFamily f a a' b b'
+ Lens.Family2.State.Lazy: (<>=) :: (Monoid o, MonadState a m) => Setter a o -> o -> m ()
+ Lens.Family2.State.Strict: (<>=) :: (Monoid o, MonadState a m) => Setter a o -> o -> m ()
+ Lens.Family2.Stock: type LensFamily a a' b b' = forall f. Functor f => RefFamily f a a' b b'
+ Lens.Family2.Unchecked: data Setting a :: * -> *
+ Lens.Family2.Unchecked: setting :: ((b -> b') -> a -> a') -> SetterFamily a a' b b'
+ Lens.Family2.Unchecked: type LensFamily a a' b b' = forall f. Functor f => RefFamily f a a' b b'
+ Lens.Family2.Unchecked: type Setter a b = SetterFamily a a b b
+ Lens.Family2.Unchecked: type SetterFamily a a' b b' = RefFamily Setting a a' b b'
- Lens.Family2.Stock: mergeL :: Functor f => LensFamily f a a' c c' -> LensFamily f b b' c c' -> LensFamily f (Either a b) (Either a' b') c c'
+ Lens.Family2.Stock: mergeL :: Functor f => RefFamily f a a' c c' -> RefFamily f b b' c c' -> RefFamily f (Either a b) (Either a' b') c c'
Files
- CHANGELOG +7/−0
- lens-family.cabal +3/−3
- src/Lens/Family2/State/Lazy.hs +9/−2
- src/Lens/Family2/State/Strict.hs +9/−2
- src/Lens/Family2/Stock.hs +2/−2
- src/Lens/Family2/Unchecked.hs +3/−1
CHANGELOG view
@@ -1,3 +1,10 @@+0.1.0 (Changes from 0.0.1)+=========================+* added project and sec+* added <>= and <>~+* renamed functional modifier operators+* moving setting to Lens.Family2.Unchecked because one needs to verify the functor laws+ 0.0.1 (Changes from 0.0.0) ========================= * Bump dependency on containers
lens-family.cabal view
@@ -1,6 +1,6 @@ name: lens-family-category: Data-version: 0.0.1+category: Data, Lenses+version: 0.1.0 license: BSD3 cabal-version: >= 1.6 license-file: LICENSE@@ -32,7 +32,7 @@ containers >= 0.3 && < 0.6, transformers >= 0.2.0 && < 0.4, mtl >= 2.1 && < 2.2,- lens-family-core >= 0.0.0 && < 0.1+ lens-family-core >= 0.1 && < 0.2 exposed-modules: Lens.Family2.Unchecked
src/Lens/Family2/State/Lazy.hs view
@@ -12,11 +12,13 @@ , (+=), (-=), (*=) , (//=) , (&&=), (||=)+ , (<>=) ) where +import Data.Monoid (Monoid, mappend) import Control.Monad (liftM) import Control.Monad.State.Lazy (MonadState, StateT(..), get, modify, state)-import Lens.Family (Getter, Setter, (^.), (^%=))+import Lens.Family (Getter, Setter, (^.), (%~)) import qualified Lens.Family.State.Lazy as LFS import Lens.Family2.Stock (Lens) @@ -33,7 +35,7 @@ -- | Modify a field of the state (%=) :: MonadState a m => Setter a b -> (b -> b) -> m ()-l %= f = modify (l ^%= f)+l %= f = modify (l %~ f) infix 4 ~= @@ -64,3 +66,8 @@ (&&=), (||=) :: MonadState a m => Setter a Bool -> Bool -> m () f &&= b = f %= (&& b) f ||= b = f %= (|| b)++infixr 4 <>=++(<>=) :: (Monoid o, MonadState a m) => Setter a o -> o -> m ()+f <>= b = f %= (`mappend` b)
src/Lens/Family2/State/Strict.hs view
@@ -12,11 +12,13 @@ , (+=), (-=), (*=) , (//=) , (&&=), (||=)+ , (<>=) ) where +import Data.Monoid (Monoid, mappend) import Control.Monad (liftM) import Control.Monad.State.Strict (MonadState, StateT(..), get, modify, state)-import Lens.Family (Getter, Setter, (^.), (^%=))+import Lens.Family (Getter, Setter, (^.), (%~)) import qualified Lens.Family.State.Strict as LFS import Lens.Family2.Stock (Lens) @@ -33,7 +35,7 @@ -- | Modify a field of the state (%=) :: MonadState a m => Setter a b -> (b -> b) -> m ()-l %= f = modify (l ^%= f)+l %= f = modify (l %~ f) infix 4 ~= @@ -64,3 +66,8 @@ (&&=), (||=) :: MonadState a m => Setter a Bool -> Bool -> m () f &&= b = f %= (&& b) f ||= b = f %= (|| b)++infixr 4 <>=++(<>=) :: (Monoid o, MonadState a m) => Setter a o -> o -> m ()+f <>= b = f %= (`mappend` b)
src/Lens/Family2/Stock.hs view
@@ -16,7 +16,7 @@ import Lens.Family2.Unchecked (LensFamily, Lens) import qualified Lens.Family.Stock as Stock-import Lens.Family ((^.), (^=))+import Lens.Family ((^.), (<~)) import qualified Data.Map as Map import qualified Data.IntMap as IntMap import qualified Data.Set as Set@@ -25,7 +25,7 @@ -- I suspect there is a more clever way to define this function. -- | Given two lens families, make a new lens on their product. (***) :: LensFamily a1 a1' b1 b1' -> LensFamily a2 a2' b2 b2' -> LensFamily (a1, a2) (a1', a2') (b1, b2) (b1', b2')-(***) l1 l2 f (a1, a2) = (\(v'1, v'2) -> (l1 ^= v'1 $ a1, l2 ^= v'2 $ a2)) `fmap` f (a1 ^. l1, a2 ^. l2)+(***) l1 l2 f (a1, a2) = (\(v'1, v'2) -> (l1 <~ v'1 $ a1, l2 <~ v'2 $ a2)) `fmap` f (a1 ^. l1, a2 ^. l2) -- | Lens on the first element of a pair. fstL :: LensFamily (a, b) (a', b) a a'
src/Lens/Family2/Unchecked.hs view
@@ -42,13 +42,15 @@ module Lens.Family2.Unchecked ( mkLens , mkIsoLens+ , LF.Setting, LF.setting -- * Types , LensFamily, Lens+ , LF.SetterFamily, LF.Setter ) where import qualified Lens.Family.Unchecked as LF -type LensFamily a a' b b' = forall f. Functor f => LF.LensFamily f a a' b b'+type LensFamily a a' b b' = forall f. Functor f => LF.RefFamily f a a' b b' type Lens a b = LensFamily a a b b -- | Build a lens from a @getter@ and @setter@ families.