comonad-5.0.8: Comonads
Copyright (C) 2008-2014 Edward Kmett
License BSD-style (see the file LICENSE)
Maintainer Edward Kmett <ekmett@gmail.com>
Stability experimental
Portability non-portable (fundeps, MPTCs)
Safe Haskell Safe
Language Haskell2010

Control.Comonad.Store

Description

Synopsis

ComonadStore class

class Comonad w => ComonadStore s w | w -> s where Source #

Minimal complete definition

pos , peek

Methods

pos :: w a -> s Source #

peek :: s -> w a -> a Source #

peeks :: (s -> s) -> w a -> a Source #

seek :: s -> w a -> w a Source #

seeks :: (s -> s) -> w a -> w a Source #

experiment :: Functor f => (s -> f s) -> w a -> f a Source #

Instances

Instances details
( ComonadStore s w, Monoid m) => ComonadStore s ( TracedT m w) Source #
Instance details

Defined in Control.Comonad.Store.Class

Methods

pos :: TracedT m w a -> s Source #

peek :: s -> TracedT m w a -> a Source #

peeks :: (s -> s) -> TracedT m w a -> a Source #

seek :: s -> TracedT m w a -> TracedT m w a Source #

seeks :: (s -> s) -> TracedT m w a -> TracedT m w a Source #

experiment :: Functor f => (s -> f s) -> TracedT m w a -> f a Source #

ComonadStore s w => ComonadStore s ( EnvT e w) Source #
Instance details

Defined in Control.Comonad.Store.Class

Methods

pos :: EnvT e w a -> s Source #

peek :: s -> EnvT e w a -> a Source #

peeks :: (s -> s) -> EnvT e w a -> a Source #

seek :: s -> EnvT e w a -> EnvT e w a Source #

seeks :: (s -> s) -> EnvT e w a -> EnvT e w a Source #

experiment :: Functor f => (s -> f s) -> EnvT e w a -> f a Source #

ComonadStore s w => ComonadStore s ( IdentityT w) Source #
Instance details

Defined in Control.Comonad.Store.Class

Comonad w => ComonadStore s ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Store.Class

Methods

pos :: StoreT s w a -> s Source #

peek :: s -> StoreT s w a -> a Source #

peeks :: (s -> s) -> StoreT s w a -> a Source #

seek :: s -> StoreT s w a -> StoreT s w a Source #

seeks :: (s -> s) -> StoreT s w a -> StoreT s w a Source #

experiment :: Functor f => (s -> f s) -> StoreT s w a -> f a Source #

The Store comonad

store :: (s -> a) -> s -> Store s a Source #

Create a Store using an accessor function and a stored value

runStore :: Store s a -> (s -> a, s) Source #

The StoreT comonad transformer

data StoreT s w a Source #

Constructors

StoreT (w (s -> a)) s

Instances

Instances details
ComonadTraced m w => ComonadTraced m ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Traced.Class

Methods

trace :: m -> StoreT s w a -> a Source #

Comonad w => ComonadStore s ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Store.Class

Methods

pos :: StoreT s w a -> s Source #

peek :: s -> StoreT s w a -> a Source #

peeks :: (s -> s) -> StoreT s w a -> a Source #

seek :: s -> StoreT s w a -> StoreT s w a Source #

seeks :: (s -> s) -> StoreT s w a -> StoreT s w a Source #

experiment :: Functor f => (s -> f s) -> StoreT s w a -> f a Source #

ComonadEnv e w => ComonadEnv e ( StoreT t w) Source #
Instance details

Defined in Control.Comonad.Env.Class

Methods

ask :: StoreT t w a -> e Source #

ComonadHoist ( StoreT s) Source #
Instance details

Defined in Control.Comonad.Trans.Store

Methods

cohoist :: ( Comonad w, Comonad v) => ( forall x. w x -> v x) -> StoreT s w a -> StoreT s v a Source #

ComonadTrans ( StoreT s) Source #
Instance details

Defined in Control.Comonad.Trans.Store

Methods

lower :: Comonad w => StoreT s w a -> w a Source #

Functor w => Functor ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Trans.Store

Methods

fmap :: (a -> b) -> StoreT s w a -> StoreT s w b Source #

(<$) :: a -> StoreT s w b -> StoreT s w a Source #

( Applicative w, Monoid s) => Applicative ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Trans.Store

( ComonadApply w, Semigroup s) => ComonadApply ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Trans.Store

Comonad w => Comonad ( StoreT s w) Source #
Instance details

Defined in Control.Comonad.Trans.Store

runStoreT :: StoreT s w a -> (w (s -> a), s) Source #

Re-exported modules