pandora-0.1.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 #

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 #

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 #

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 #

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

Defined in Pandora.Paradigm.Basis.Free

Methods

exclusive :: 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 #