module Lens.Family2.Stock
(
Stock.mergeL
, (***)
, fstL, sndL
, funL
, mapL, intMapL
, setL, intSetL
, LensFamily, Lens
) where
import Lens.Family2.Unchecked (LensFamily, Lens)
import qualified Lens.Family.Stock as Stock
import Lens.Family ((^.), (^=))
import qualified Data.Map as Map
import qualified Data.IntMap as IntMap
import qualified Data.Set as Set
import qualified Data.IntSet as IntSet
(***) :: 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)
fstL :: LensFamily (a, b) (a', b) a a'
fstL = Stock.fstL
sndL :: LensFamily (a, b) (a, b') b b'
sndL = Stock.sndL
funL :: (Eq k) => k -> Lens (k -> v) v
funL = Stock.funL
mapL :: (Ord k) => k -> Lens (Map.Map k v) (Maybe v)
mapL = Stock.mapL
intMapL :: Int -> Lens (IntMap.IntMap v) (Maybe v)
intMapL = Stock.intMapL
setL :: (Ord k) => k -> Lens (Set.Set k) Bool
setL = Stock.setL
intSetL :: Int -> Lens IntSet.IntSet Bool
intSetL = Stock.intSetL