pandora-0.2.0: A box of patterns and paradigms

Safe HaskellSafe
LanguageHaskell2010

Pandora.Paradigm.Inventory.Stateful

Contents

Documentation

newtype Stateful s a Source #

Constructors

Stateful (((->) s :. (:*:) s) > a) 
Instances
Covariant (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Methods

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

comap :: (a -> b) -> Stateful s a -> Stateful s b Source #

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

($>) :: Stateful s a -> b -> Stateful s b Source #

void :: Stateful s a -> Stateful s () Source #

loeb :: Stateful s (Stateful s a -> a) -> Stateful s a Source #

(<&>) :: Stateful s a -> (a -> b) -> Stateful s b Source #

(<$$>) :: Covariant u => (a -> b) -> ((Stateful s :. u) > a) -> (Stateful s :. u) > b Source #

(<$$$>) :: (Covariant u, Covariant v) => (a -> b) -> ((Stateful s :. (u :. v)) > a) -> (Stateful s :. (u :. v)) > b Source #

(<$$$$>) :: (Covariant u, Covariant v, Covariant w) => (a -> b) -> ((Stateful s :. (u :. (v :. w))) > a) -> (Stateful s :. (u :. (v :. w))) > b Source #

(<&&>) :: Covariant u => ((Stateful s :. u) > a) -> (a -> b) -> (Stateful s :. u) > b Source #

(<&&&>) :: (Covariant u, Covariant v) => ((Stateful s :. (u :. v)) > a) -> (a -> b) -> (Stateful s :. (u :. v)) > b Source #

(<&&&&>) :: (Covariant u, Covariant v, Covariant w) => ((Stateful s :. (u :. (v :. w))) > a) -> (a -> b) -> (Stateful s :. (u :. (v :. w))) > b Source #

Bindable (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Methods

(>>=) :: Stateful s a -> (a -> Stateful s b) -> Stateful s b Source #

(=<<) :: (a -> Stateful s b) -> Stateful s a -> Stateful s b Source #

bind :: (a -> Stateful s b) -> Stateful s a -> Stateful s b Source #

join :: ((Stateful s :. Stateful s) > a) -> Stateful s a Source #

(>=>) :: (a -> Stateful s b) -> (b -> Stateful s c) -> a -> Stateful s c Source #

(<=<) :: (b -> Stateful s c) -> (a -> Stateful s b) -> a -> Stateful s c Source #

Applicative (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Methods

(<*>) :: Stateful s (a -> b) -> Stateful s a -> Stateful s b Source #

apply :: Stateful s (a -> b) -> Stateful s a -> Stateful s b Source #

(*>) :: Stateful s a -> Stateful s b -> Stateful s b Source #

(<*) :: Stateful s a -> Stateful s b -> Stateful s a Source #

forever :: Stateful s a -> Stateful s b Source #

(<**>) :: Applicative u => ((Stateful s :. u) > (a -> b)) -> ((Stateful s :. u) > a) -> (Stateful s :. u) > b Source #

(<***>) :: (Applicative u, Applicative v) => ((Stateful s :. (u :. v)) > (a -> b)) -> ((Stateful s :. (u :. v)) > a) -> (Stateful s :. (u :. v)) > b Source #

(<****>) :: (Applicative u, Applicative v, Applicative w) => ((Stateful s :. (u :. (v :. w))) > (a -> b)) -> ((Stateful s :. (u :. (v :. w))) > a) -> (Stateful s :. (u :. (v :. w))) > b Source #

Pointable (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Methods

point :: a -> Stateful s a Source #

Monad (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Composition (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Associated Types

type Primary (Stateful s) a :: Type Source #

Methods

unwrap :: Stateful s a -> Primary (Stateful s) a Source #

Transformer (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

Associated Types

type Schema (Stateful s) u = (r :: Type -> Type) Source #

Adjoint (Storage s) (Stateful s) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Optics

Methods

(-|) :: a -> (Storage s a -> b) -> Stateful s b Source #

(|-) :: Storage s a -> (a -> Stateful s b) -> b Source #

phi :: (Storage s a -> b) -> a -> Stateful s b Source #

psi :: (a -> Stateful s b) -> Storage s a -> b Source #

eta :: a -> (Stateful s :. Storage s) > a Source #

epsilon :: ((Storage s :. Stateful s) > a) -> a Source #

type Primary (Stateful s) a Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

type Primary (Stateful s) a = (((->) s :: Type -> Type) :. (:*:) s) > a
type Schema (Stateful s) u Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Stateful

type Schema (Stateful s) u = TUV Co Co Co ((->) s :: Type -> Type) u ((:*:) s)

statefully :: s -> Stateful s a -> s :*: a Source #

modify :: (s -> s) -> Stateful s () Source #

put :: s -> Stateful s () Source #

fold :: Traversable t => s -> (a -> s -> s) -> t a -> s Source #

find :: (Pointable u, Avoidable u, Alternative u, Traversable t) => Predicate a -> t a -> u a Source #

Orphan instances

Covariant u => Covariant (TUV Co Co Co ((->) s :: Type -> Type) u ((:*:) s)) Source # 
Instance details

Methods

(<$>) :: (a -> b) -> TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

comap :: (a -> b) -> TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

(<$) :: a -> TUV Co Co Co ((->) s) u ((:*:) s) b -> TUV Co Co Co ((->) s) u ((:*:) s) a Source #

($>) :: TUV Co Co Co ((->) s) u ((:*:) s) a -> b -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

void :: TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) () Source #

loeb :: TUV Co Co Co ((->) s) u ((:*:) s) (TUV Co Co Co ((->) s) u ((:*:) s) a -> a) -> TUV Co Co Co ((->) s) u ((:*:) s) a Source #

(<&>) :: TUV Co Co Co ((->) s) u ((:*:) s) a -> (a -> b) -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

(<$$>) :: Covariant u0 => (a -> b) -> ((TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > a) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > b Source #

(<$$$>) :: (Covariant u0, Covariant v) => (a -> b) -> ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > a) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > b Source #

(<$$$$>) :: (Covariant u0, Covariant v, Covariant w) => (a -> b) -> ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > a) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > b Source #

(<&&>) :: Covariant u0 => ((TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > a) -> (a -> b) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > b Source #

(<&&&>) :: (Covariant u0, Covariant v) => ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > a) -> (a -> b) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > b Source #

(<&&&&>) :: (Covariant u0, Covariant v, Covariant w) => ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > a) -> (a -> b) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > b Source #

Bindable u => Bindable (TUV Co Co Co ((->) s :: Type -> Type) u ((:*:) s)) Source # 
Instance details

Methods

(>>=) :: TUV Co Co Co ((->) s) u ((:*:) s) a -> (a -> TUV Co Co Co ((->) s) u ((:*:) s) b) -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

(=<<) :: (a -> TUV Co Co Co ((->) s) u ((:*:) s) b) -> TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

bind :: (a -> TUV Co Co Co ((->) s) u ((:*:) s) b) -> TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

join :: ((TUV Co Co Co ((->) s) u ((:*:) s) :. TUV Co Co Co ((->) s) u ((:*:) s)) > a) -> TUV Co Co Co ((->) s) u ((:*:) s) a Source #

(>=>) :: (a -> TUV Co Co Co ((->) s) u ((:*:) s) b) -> (b -> TUV Co Co Co ((->) s) u ((:*:) s) c) -> a -> TUV Co Co Co ((->) s) u ((:*:) s) c Source #

(<=<) :: (b -> TUV Co Co Co ((->) s) u ((:*:) s) c) -> (a -> TUV Co Co Co ((->) s) u ((:*:) s) b) -> a -> TUV Co Co Co ((->) s) u ((:*:) s) c Source #

Bindable u => Applicative (TUV Co Co Co ((->) s :: Type -> Type) u ((:*:) s)) Source # 
Instance details

Methods

(<*>) :: TUV Co Co Co ((->) s) u ((:*:) s) (a -> b) -> TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

apply :: TUV Co Co Co ((->) s) u ((:*:) s) (a -> b) -> TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

(*>) :: TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

(<*) :: TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b -> TUV Co Co Co ((->) s) u ((:*:) s) a Source #

forever :: TUV Co Co Co ((->) s) u ((:*:) s) a -> TUV Co Co Co ((->) s) u ((:*:) s) b Source #

(<**>) :: Applicative u0 => ((TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > (a -> b)) -> ((TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > a) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. u0) > b Source #

(<***>) :: (Applicative u0, Applicative v) => ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > (a -> b)) -> ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > a) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. v)) > b Source #

(<****>) :: (Applicative u0, Applicative v, Applicative w) => ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > (a -> b)) -> ((TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > a) -> (TUV Co Co Co ((->) s) u ((:*:) s) :. (u0 :. (v :. w))) > b Source #

Pointable u => Pointable (TUV Co Co Co ((->) s :: Type -> Type) u ((:*:) s)) Source # 
Instance details

Methods

point :: a -> TUV Co Co Co ((->) s) u ((:*:) s) a Source #

Monad u => Monad (TUV Co Co Co ((->) s :: Type -> Type) u ((:*:) s)) Source # 
Instance details