pandora-0.2.0: A box of patterns and paradigms

Safe HaskellSafe
LanguageHaskell2010

Pandora.Paradigm.Basis.Free

Documentation

data Free t a Source #

Constructors

Pure a 
Impure ((t :. Free t) > a) 
Instances
Covariant t => Covariant (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

(<$>) :: (a -> b) -> Free t a -> Free t b Source #

comap :: (a -> b) -> Free t a -> Free t b Source #

(<$) :: a -> Free t b -> Free t a Source #

($>) :: Free t a -> b -> Free t b Source #

void :: Free t a -> Free t () Source #

loeb :: Free t (Free t a -> a) -> Free t a Source #

(<&>) :: Free t a -> (a -> b) -> Free t b Source #

(<$$>) :: Covariant u => (a -> b) -> ((Free t :. u) > a) -> (Free t :. u) > b Source #

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

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

(<&&>) :: Covariant u => ((Free t :. u) > a) -> (a -> b) -> (Free t :. u) > b Source #

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

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

Covariant t => Bindable (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

(>>=) :: Free t a -> (a -> Free t b) -> Free t b Source #

(=<<) :: (a -> Free t b) -> Free t a -> Free t b Source #

bind :: (a -> Free t b) -> Free t a -> Free t b Source #

join :: ((Free t :. Free t) > a) -> Free t a Source #

(>=>) :: (a -> Free t b) -> (b -> Free t c) -> a -> Free t c Source #

(<=<) :: (b -> Free t c) -> (a -> Free t b) -> a -> Free t c Source #

Covariant t => Applicative (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

(<*>) :: Free t (a -> b) -> Free t a -> Free t b Source #

apply :: Free t (a -> b) -> Free t a -> Free t b Source #

(*>) :: Free t a -> Free t b -> Free t b Source #

(<*) :: Free t a -> Free t b -> Free t a Source #

forever :: Free t a -> Free t b Source #

(<**>) :: Applicative u => ((Free t :. u) > (a -> b)) -> ((Free t :. u) > a) -> (Free t :. u) > b Source #

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

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

Alternative t => Alternative (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

(<+>) :: Free t a -> Free t a -> Free t a Source #

alter :: Free t a -> Free t a -> Free t a Source #

Avoidable t => Avoidable (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

empty :: Free t a Source #

Covariant t => Pointable (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

point :: a -> Free t a Source #

Traversable t => Traversable (Free t) Source # 
Instance details

Defined in Pandora.Paradigm.Basis.Free

Methods

(->>) :: (Pointable u, Applicative u) => Free t a -> (a -> u b) -> (u :. Free t) > b Source #

traverse :: (Pointable u, Applicative u) => (a -> u b) -> Free t a -> (u :. Free t) > b Source #

sequence :: (Pointable u, Applicative u) => (Free t :. u) a -> (u :. Free t) > a Source #

(->>>) :: (Pointable u, Applicative u, Traversable v) => ((v :. Free t) > a) -> (a -> u b) -> (u :. (v :. Free t)) > b Source #

(->>>>) :: (Pointable u, Applicative u, Traversable v, Traversable w) => ((w :. (v :. Free t)) > a) -> (a -> u b) -> (u :. (w :. (v :. Free t))) > b Source #

(->>>>>) :: (Pointable u, Applicative u, Traversable v, Traversable w, Traversable j) => ((j :. (w :. (v :. Free t))) > a) -> (a -> u b) -> (u :. (j :. (w :. (v :. Free t)))) > b Source #