| Portability | portable | 
|---|---|
| Stability | provisional | 
| Maintainer | Edward Kmett <ekmett@gmail.com> | 
| Safe Haskell | Safe-Infered | 
Control.Comonad.Trans.Store
Description
The strict store (state-in-context/costate) comonad transformer is subject to the laws:
x = seek (pos x) x y = pos (seek y x) seek y x = seek y (seek z x)
Thanks go to Russell O'Connor and Daniel Peebles for their help formulating and proving the laws for this comonad transformer.
- type Store s = StoreT s Identity
 - store :: (s -> a) -> s -> Store s a
 - runStore :: Store s a -> (s -> a, s)
 - data StoreT s w a = StoreT (w (s -> a)) s
 - runStoreT :: StoreT s w a -> (w (s -> a), s)
 - pos :: StoreT s w a -> s
 - seek :: Comonad w => s -> StoreT s w a -> StoreT s w a
 - seeks :: Comonad w => (s -> s) -> StoreT s w a -> StoreT s w a
 - peek :: Comonad w => s -> StoreT s w a -> a
 - peeks :: Comonad w => (s -> s) -> StoreT s w a -> a
 
The Store comonad
The Store comonad transformer
Constructors
| StoreT (w (s -> a)) s | 
Instances
| ComonadTrans (StoreT s) | |
| ComonadHoist (StoreT s) | |
| Functor w => Functor (StoreT s w) | |
| (Typeable s, Typeable1 w) => Typeable1 (StoreT s w) | |
| (Applicative w, Semigroup s, Monoid s) => Applicative (StoreT s w) | |
| Comonad w => Comonad (StoreT s w) | |
| Extend w => Extend (StoreT s w) | |
| (Apply w, Semigroup s) => Apply (StoreT s w) | |
| (Typeable s, Typeable1 w, Typeable a) => Typeable (StoreT s w a) | 
Operations
seek :: Comonad w => s -> StoreT s w a -> StoreT s w aSource
Seek to an absolute location
seek s = peek s . duplicate
seeks :: Comonad w => (s -> s) -> StoreT s w a -> StoreT s w aSource
Seek to a relative location
seeks f = peeks f . duplicate