module Optics.State
( modifying
, modifying'
, assign
, assign'
, use
, preuse
) where
import Control.Monad.State
import Optics.Core
modifying
:: (Is k A_Setter, MonadState s m)
=> Optic k is s s a b
-> (a -> b)
-> m ()
modifying :: forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind)
(b :: OpticKind).
(Is k A_Setter, MonadState s m) =>
Optic k is s s a b -> (a -> b) -> m ()
modifying Optic k is s s a b
o = (s -> s) -> m ()
forall (s :: OpticKind) (m :: OpticKind -> OpticKind).
MonadState s m =>
(s -> s) -> m ()
modify ((s -> s) -> m ()) -> ((a -> b) -> s -> s) -> (a -> b) -> m ()
forall (b :: OpticKind) (c :: OpticKind) (a :: OpticKind).
(b -> c) -> (a -> b) -> a -> c
. Optic k is s s a b -> (a -> b) -> s -> s
forall (k :: OpticKind) (is :: IxList) (s :: OpticKind)
(t :: OpticKind) (a :: OpticKind) (b :: OpticKind).
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
over Optic k is s s a b
o
{-# INLINE modifying #-}
modifying'
:: (Is k A_Setter, MonadState s m)
=> Optic k is s s a b
-> (a -> b)
-> m ()
modifying' :: forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind)
(b :: OpticKind).
(Is k A_Setter, MonadState s m) =>
Optic k is s s a b -> (a -> b) -> m ()
modifying' Optic k is s s a b
o = (s -> s) -> m ()
forall (s :: OpticKind) (m :: OpticKind -> OpticKind).
MonadState s m =>
(s -> s) -> m ()
modify' ((s -> s) -> m ()) -> ((a -> b) -> s -> s) -> (a -> b) -> m ()
forall (b :: OpticKind) (c :: OpticKind) (a :: OpticKind).
(b -> c) -> (a -> b) -> a -> c
. Optic k is s s a b -> (a -> b) -> s -> s
forall (k :: OpticKind) (is :: IxList) (s :: OpticKind)
(t :: OpticKind) (a :: OpticKind) (b :: OpticKind).
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
over' Optic k is s s a b
o
{-# INLINE modifying' #-}
assign
:: (Is k A_Setter, MonadState s m)
=> Optic k is s s a b
-> b
-> m ()
assign :: forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind)
(b :: OpticKind).
(Is k A_Setter, MonadState s m) =>
Optic k is s s a b -> b -> m ()
assign Optic k is s s a b
o = Optic k is s s a b -> (a -> b) -> m ()
forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind)
(b :: OpticKind).
(Is k A_Setter, MonadState s m) =>
Optic k is s s a b -> (a -> b) -> m ()
modifying Optic k is s s a b
o ((a -> b) -> m ()) -> (b -> a -> b) -> b -> m ()
forall (b :: OpticKind) (c :: OpticKind) (a :: OpticKind).
(b -> c) -> (a -> b) -> a -> c
. b -> a -> b
forall (a :: OpticKind) (b :: OpticKind). a -> b -> a
const
{-# INLINE assign #-}
assign'
:: (Is k A_Setter, MonadState s m)
=> Optic k is s s a b
-> b
-> m ()
assign' :: forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind)
(b :: OpticKind).
(Is k A_Setter, MonadState s m) =>
Optic k is s s a b -> b -> m ()
assign' Optic k is s s a b
o = Optic k is s s a b -> (a -> b) -> m ()
forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind)
(b :: OpticKind).
(Is k A_Setter, MonadState s m) =>
Optic k is s s a b -> (a -> b) -> m ()
modifying' Optic k is s s a b
o ((a -> b) -> m ()) -> (b -> a -> b) -> b -> m ()
forall (b :: OpticKind) (c :: OpticKind) (a :: OpticKind).
(b -> c) -> (a -> b) -> a -> c
. b -> a -> b
forall (a :: OpticKind) (b :: OpticKind). a -> b -> a
const
{-# INLINE assign' #-}
use
:: (Is k A_Getter, MonadState s m)
=> Optic' k is s a
-> m a
use :: forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind).
(Is k A_Getter, MonadState s m) =>
Optic' k is s a -> m a
use Optic' k is s a
o = (s -> a) -> m a
forall (s :: OpticKind) (m :: OpticKind -> OpticKind)
(a :: OpticKind).
MonadState s m =>
(s -> a) -> m a
gets (Optic' k is s a -> s -> a
forall (k :: OpticKind) (is :: IxList) (s :: OpticKind)
(a :: OpticKind).
Is k A_Getter =>
Optic' k is s a -> s -> a
view Optic' k is s a
o)
{-# INLINE use #-}
preuse
:: (Is k An_AffineFold, MonadState s m)
=> Optic' k is s a
-> m (Maybe a)
preuse :: forall (k :: OpticKind) (s :: OpticKind)
(m :: OpticKind -> OpticKind) (is :: IxList) (a :: OpticKind).
(Is k An_AffineFold, MonadState s m) =>
Optic' k is s a -> m (Maybe a)
preuse Optic' k is s a
o = (s -> Maybe a) -> m (Maybe a)
forall (s :: OpticKind) (m :: OpticKind -> OpticKind)
(a :: OpticKind).
MonadState s m =>
(s -> a) -> m a
gets (Optic' k is s a -> s -> Maybe a
forall (k :: OpticKind) (is :: IxList) (s :: OpticKind)
(a :: OpticKind).
Is k An_AffineFold =>
Optic' k is s a -> s -> Maybe a
preview Optic' k is s a
o)
{-# INLINE preuse #-}