module Data.Accessor.MonadState where
import qualified Data.Accessor.Basic as Accessor
import qualified Control.Monad.State as State
import Control.Monad.State (MonadState, )
set :: MonadState r m => Accessor.T r a -> a -> m ()
set f x = State.modify (Accessor.set f x)
get :: MonadState r m => Accessor.T r a -> m a
get f = State.gets (Accessor.get f)
modify :: MonadState r m => Accessor.T r a -> (a -> a) -> m ()
modify f g = State.modify (Accessor.modify f g)
infix 1 %=, %:
(%=) :: MonadState r m => Accessor.T r a -> a -> m ()
(%=) = set
(%:) :: MonadState r m => Accessor.T r a -> (a -> a) -> m ()
(%:) = modify