pandora-0.3.9: A box of patterns and paradigms
Safe HaskellSafe-Inferred
LanguageHaskell2010

Pandora.Paradigm.Inventory.Accumulator

Documentation

newtype Accumulator e a Source #

Constructors

Accumulator (e :*: a) 

Instances

Instances details
Covariant (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

Methods

(<$>) :: (a -> b) -> Accumulator e a -> Accumulator e b Source #

comap :: (a -> b) -> Accumulator e a -> Accumulator e b Source #

(<$) :: a -> Accumulator e b -> Accumulator e a Source #

($>) :: Accumulator e a -> b -> Accumulator e b Source #

void :: Accumulator e a -> Accumulator e () Source #

loeb :: Accumulator e (a <:= Accumulator e) -> Accumulator e a Source #

(<&>) :: Accumulator e a -> (a -> b) -> Accumulator e b Source #

(<$$>) :: Covariant u => (a -> b) -> ((Accumulator e :. u) := a) -> (Accumulator e :. u) := b Source #

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

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

(<&&>) :: Covariant u => ((Accumulator e :. u) := a) -> (a -> b) -> (Accumulator e :. u) := b Source #

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

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

Semigroup e => Bindable (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

Methods

(>>=) :: Accumulator e a -> (a -> Accumulator e b) -> Accumulator e b Source #

(=<<) :: (a -> Accumulator e b) -> Accumulator e a -> Accumulator e b Source #

bind :: (a -> Accumulator e b) -> Accumulator e a -> Accumulator e b Source #

join :: ((Accumulator e :. Accumulator e) := a) -> Accumulator e a Source #

(>=>) :: (a -> Accumulator e b) -> (b -> Accumulator e c) -> a -> Accumulator e c Source #

(<=<) :: (b -> Accumulator e c) -> (a -> Accumulator e b) -> a -> Accumulator e c Source #

($>>=) :: Covariant u => ((u :. Accumulator e) := a) -> (a -> Accumulator e b) -> (u :. Accumulator e) := b Source #

Semigroup e => Applicative (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

Methods

(<*>) :: Accumulator e (a -> b) -> Accumulator e a -> Accumulator e b Source #

apply :: Accumulator e (a -> b) -> Accumulator e a -> Accumulator e b Source #

(*>) :: Accumulator e a -> Accumulator e b -> Accumulator e b Source #

(<*) :: Accumulator e a -> Accumulator e b -> Accumulator e a Source #

forever :: Accumulator e a -> Accumulator e b Source #

(<%>) :: Accumulator e a -> Accumulator e (a -> b) -> Accumulator e b Source #

(<**>) :: Applicative u => ((Accumulator e :. u) := (a -> b)) -> ((Accumulator e :. u) := a) -> (Accumulator e :. u) := b Source #

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

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

Monoid e => Pointable (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

Interpreted (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

Associated Types

type Primary (Accumulator e) a Source #

Methods

run :: Accumulator e a -> Primary (Accumulator e) a Source #

unite :: Primary (Accumulator e) a -> Accumulator e a Source #

(||=) :: Interpreted u => (Primary (Accumulator e) a -> Primary u b) -> Accumulator e a -> u b Source #

(=||) :: Interpreted u => (Accumulator e a -> u b) -> Primary (Accumulator e) a -> Primary u b Source #

Monoid e => Monadic (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

Methods

wrap :: forall (u :: Type -> Type). Pointable u => Accumulator e ~> (Accumulator e :> u) Source #

Adjoint (Accumulator e) (Imprint e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory

Methods

(-|) :: a -> (Accumulator e a -> b) -> Imprint e b Source #

(|-) :: Accumulator e a -> (a -> Imprint e b) -> b Source #

phi :: (Accumulator e a -> b) -> a -> Imprint e b Source #

psi :: (a -> Imprint e b) -> Accumulator e a -> b Source #

eta :: a -> (Imprint e :. Accumulator e) := a Source #

epsilon :: ((Accumulator e :. Imprint e) := a) -> a Source #

(-|$) :: Covariant v => v a -> (Accumulator e a -> b) -> v (Imprint e b) Source #

($|-) :: Covariant v => v (Accumulator e a) -> (a -> Imprint e b) -> v b Source #

($$|-) :: (Covariant v, Covariant w) => ((v :. (w :. Accumulator e)) := a) -> (a -> Imprint e b) -> (v :. w) := b Source #

($$$|-) :: (Covariant v, Covariant w, Covariant x) => ((v :. (w :. (x :. Accumulator e))) := a) -> (a -> Imprint e b) -> (v :. (w :. x)) := b Source #

($$$$|-) :: (Covariant v, Covariant w, Covariant x, Covariant y) => ((v :. (w :. (x :. (y :. Accumulator e)))) := a) -> (a -> Imprint e b) -> (v :. (w :. (x :. y))) := b Source #

type Schematic Monad (Accumulator e) Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

type Primary (Accumulator e) a Source # 
Instance details

Defined in Pandora.Paradigm.Inventory.Accumulator

type Primary (Accumulator e) a = e :*: a

gather :: Accumulated e t => e -> t () Source #

Orphan instances

(Semigroup e, Pointable u, Bindable u) => Bindable ((:*:) e <.:> u) Source # 
Instance details

Methods

(>>=) :: ((:*:) e <.:> u) a -> (a -> ((:*:) e <.:> u) b) -> ((:*:) e <.:> u) b Source #

(=<<) :: (a -> ((:*:) e <.:> u) b) -> ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b Source #

bind :: (a -> ((:*:) e <.:> u) b) -> ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b Source #

join :: ((((:*:) e <.:> u) :. ((:*:) e <.:> u)) := a) -> ((:*:) e <.:> u) a Source #

(>=>) :: (a -> ((:*:) e <.:> u) b) -> (b -> ((:*:) e <.:> u) c) -> a -> ((:*:) e <.:> u) c Source #

(<=<) :: (b -> ((:*:) e <.:> u) c) -> (a -> ((:*:) e <.:> u) b) -> a -> ((:*:) e <.:> u) c Source #

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

(Semigroup e, Applicative u) => Applicative ((:*:) e <.:> u) Source # 
Instance details

Methods

(<*>) :: ((:*:) e <.:> u) (a -> b) -> ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b Source #

apply :: ((:*:) e <.:> u) (a -> b) -> ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b Source #

(*>) :: ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b -> ((:*:) e <.:> u) b Source #

(<*) :: ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b -> ((:*:) e <.:> u) a Source #

forever :: ((:*:) e <.:> u) a -> ((:*:) e <.:> u) b Source #

(<%>) :: ((:*:) e <.:> u) a -> ((:*:) e <.:> u) (a -> b) -> ((:*:) e <.:> u) b Source #

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

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

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

(Pointable u, Monoid e) => Pointable ((:*:) e <.:> u) Source # 
Instance details

Methods

point :: a :=> ((:*:) e <.:> u) Source #

pass :: ((:*:) e <.:> u) () Source #