| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Optics.State
Description
This module contains utilities for working with Setters in a MonadState
context. If you prefer operator versions, you may wish to import
Optics.State.Operators.
Synopsis
- modifying :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> (a -> b) -> m ()
- modifying' :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> (a -> b) -> m ()
- assign :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> b -> m ()
- assign' :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> b -> m ()
- use :: (Is k A_Getter, MonadState s m) => Optic' k is s a -> m a
- preuse :: (Is k An_AffineFold, MonadState s m) => Optic' k is s a -> m (Maybe a)
Documentation
modifying :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> (a -> b) -> m () Source #
Map over the target(s) of an Optic in our monadic state.
>>>execState (do modifying _1 (*10); modifying _2 $ stimes 5) (6,"o")(60,"ooooo")
>>>execState (modifying each $ stimes 2) ("a","b")("aa","bb")
modifying' :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> (a -> b) -> m () Source #
Version of modifying that is strict in both optic application and state
modification.
>>>flip evalState ('a','b') $ modifying _1 (errorWithoutStackTrace "oops")()
>>>flip evalState ('a','b') $ modifying' _1 (errorWithoutStackTrace "oops")*** Exception: oops
assign :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> b -> m () Source #
Replace the target(s) of an Optic in our monadic state with a new value,
irrespective of the old.
>>>execState (do assign _1 'c'; assign _2 'd') ('a','b')('c','d')
>>>execState (assign each 'c') ('a','b')('c','c')
assign' :: (Is k A_Setter, MonadState s m) => Optic k is s s a b -> b -> m () Source #
Version of assign that is strict in both optic application and state
modification.
>>>flip evalState ('a','b') $ assign _1 (errorWithoutStackTrace "oops")()
>>>flip evalState ('a','b') $ assign' _1 (errorWithoutStackTrace "oops")*** Exception: oops
preuse :: (Is k An_AffineFold, MonadState s m) => Optic' k is s a -> m (Maybe a) Source #
Use the target of a AffineTraveral or AffineFold in the current state.
>>>evalState (preuse $ _1 % _Right) (Right 'a','b')Just 'a'
Since: 0.2