module OldLens
( Lens
, lens
, OldLens.iso
, getL
, setL
, modL
, access
, focus
, (OldLens.%=)
, (OldLens.~=)
) where
import Control.Monad.State (StateT, get, put)
import Control.Lens hiding (Lens, lens)
import Control.Lens.Internal.Zoom (Zoomed)
import qualified Control.Lens (lens)
type Lens a b = Lens' a b
lens :: (a -> b) -> (b -> a -> a) -> Lens a b
lens getter setter = Control.Lens.lens getter (flip setter)
iso :: (a -> b) -> (b -> a) -> Lens a b
iso = Control.Lens.iso
getL :: Lens a b -> a -> b
getL lns x = x ^. lns
setL :: Lens a b -> b -> a -> a
setL lns y x = set lns y x
modL :: Lens a b -> (b -> b) -> a -> a
modL lns f x = set lns (f (view lns x)) x
access :: Monad m => Lens a b -> StateT a m b
access lns = get >>= return Prelude.. view lns
(~=) :: Monad m => Lens a b -> b -> StateT a m ()
lns ~= y = get >>= \x -> put (set lns y x)
(%=) :: Monad m => Lens a b -> (b -> b) -> StateT a m ()
lns %= f = get >>= \x -> put (set lns (f (getL lns x)) x)
focus :: forall m n s t c. (Zoom m n s t, Zoomed n ~ Zoomed m) => LensLike' (Zoomed m c) t s -> m c -> n c
focus lns st = zoom lns st