Idris2Doc : Control.Category.Monad

Control.Category.Monad

(source)

Definitions

interfaceCatMonad : Homobj-> (obj->obj) ->Type
  A *monad* `m` is a monoid object in the category of endofunctors 
in `cat`, where the tensor product is given by composition.
Generally, `cat` is a category, though this is not enforced by the
interface.

This is the interface-style definition of a monad. For the
record-style definition, see `Control.Category.Records.MonadR`.

Laws (when `cat` is a category):
* `join . unit = id`
* `join . map unit = id`
* `join . join = join . map join`

Parameters: cat, m
Constraints: CatFunctor cat cat m
Constructor: 
MkCatMonad

Methods:
join : cat (m (ma)) (ma)
  The join transformation of the monad.
unit : cata (ma)
  The unit transformation of the monad.
join : CatMonadcatm=>cat (m (ma)) (ma)
  The join transformation of the monad.

Totality: total
Visibility: public export
unit : CatMonadcatm=>cata (ma)
  The unit transformation of the monad.

Totality: total
Visibility: public export
interfaceStrongFunctor : Homobj-> (obj->obj->obj) -> (obj->obj) ->Type
  An endofunctor has *tensorial strength* if it is compatible with a
monoidal category's tensor product. Generally, `cat` is a monoidal
category with `ten` as its tensor produt, though this is not
enforced by the interface.

Note that while all Prelude functors have strength over `Pair`,
this does not necessarily hold for other tensor products or in
other categories.

This is the interface-style definition of a strong functor. For
the record-style definition, see `Control.Category.Records.StrongFunctorR`.

Laws (when `cat` is a monoidal category):
* `map unitl . strongl = unitl`
* `map unitr . strongr = unitr`
* `map assoc . strongl = strongl . mapr strongl . assoc`
* `map assoc' . strongr = strongr . mapl strongr . assoc'`
* `strongr . mapl strongl = strongl . mapr strongr . assoc`

Parameters: cat, ten, f
Constraints: CatFunctor cat cat f
Constructor: 
MkStrongFunctor

Methods:
strongl : cat (tena (fb)) (f (tenab))
  The left tensor strength.
strongr : cat (ten (fa) b) (f (tenab))
  The right tensor strength.
strongl : StrongFunctorcattenf=>cat (tena (fb)) (f (tenab))
  The left tensor strength.

Totality: total
Visibility: public export
strongr : StrongFunctorcattenf=>cat (ten (fa) b) (f (tenab))
  The right tensor strength.

Totality: total
Visibility: public export
StrongMonad : Homobj-> (obj->obj->obj) -> (obj->obj) ->Type
  A strong monad is a monad that is also a strong functor, with
additional compatibility laws.

Laws:
* `strongl . mapr unit = unit`
* `strongr . mapl unit = unit`
* `join . map strongl . strongl = strongl . mapr join`
* `join . map strongr . strongr = strongr . mapl join`

Totality: total
Visibility: public export
MorFromMonad : Monadm=>Bitraversableten=>StrongMonadMorphismtenm
  Convert a Prelude `Monad` into a strong monad over `Morphism`.

Totality: total
Visibility: public export
FuncFromMonad : Monadm=>Bitraversableten=>StrongMonad(~~>)tenm
  Convert a Prelude `Monad` into a strong monad over the function
category.

Totality: total
Visibility: public export