Idris2Doc : Data.Profunctor.Strong

Data.Profunctor.Strong

(source)
This module defines profunctor strength with respect to a particular
monoidal structure.

Unlike Haskell's profunctors library, `Strong` and `Choice` are here
special cases of the interface `GenStrong`, which defines strength with
respect to an arbitrary tensor product. When writing implementations for
a profunctor, `GenStrong Pair` and `GenStrong Either` should be used instead
of `Strong` and `Choice` respectively.

Definitions

interfaceGenStrong : (Type->Type->Type) -> (Type->Type->Type) ->Type
  Profunctor strength with respect to a tensor product.
A strong profunctor preserves the monoidal structure of a category.

These constraints are not required by the interface, but the tensor product
`ten` is generally expected to implement `(Tensor ten i, Symmetric ten)`.

Laws:
* `strongl = dimap swap' swap' . strongr`
* `dimap unitr.rightToLeft unitr.leftToRight . strongl = id`
* `lmap (mapSnd f) . strongl = rmap (mapSnd f) . strongl`
* `strongr . strongr = dimap assocr assocl . strongr`

@ ten The tensor product of the monoidal structure

Parameters: ten, p
Constraints: Profunctor p
Methods:
strongl : pab->p (tenac) (tenbc)
  The left action of a strong profunctor.
strongr : pab->p (tenca) (tencb)
  The right action of a strong profunctor.

Implementations:
Bifunctorten=>GenStrongtenMorphism
Functorf=>GenStrongPair (Kleislimorphismf)
Applicativef=>GenStrongEither (Kleislimorphismf)
Functorf=>GenStrongPair (Starf)
Applicativef=>GenStrongEither (Starf)
GenStrongEitherTagged
GenStrongPair (Forgetr)
Monoidr=>GenStrongEither (Forgetr)
GenStrongEither (Coforgetr)
Associativeten=>Symmetricten=>Profunctorp=>GenStrongten (GenTambaratenp)
(Associativeten, Symmetricten) =>GenStrongten (GenPastrotenp)
Strongp=>GenStrongPair (Closurep)
strongl : GenStrongtenp=>pab->p (tenac) (tenbc)
  The left action of a strong profunctor.

Totality: total
Visibility: public export
strongr : GenStrongtenp=>pab->p (tenca) (tencb)
  The right action of a strong profunctor.

Totality: total
Visibility: public export
Strong : (Type->Type->Type) ->Type
  Profunctor strength with respect to the product (`Pair`).

Totality: total
Visibility: public export
first : Strongp=>pab->p (a, c) (b, c)
  A special case of `strongl` with constraint `Strong`.
This is useful if the typechecker has trouble inferring the tensor product.

Totality: total
Visibility: public export
second : Strongp=>pab->p (c, a) (c, b)
  A special case of `strongr` with constraint `Strong`.
This is useful if the typechecker has trouble inferring the tensor product.

Totality: total
Visibility: public export
Choice : (Type->Type->Type) ->Type
  Profunctor strength with respect to the coproduct (`Either`).

Totality: total
Visibility: public export
left : Choicep=>pab->p (Eitherac) (Eitherbc)
  A special case of `strongl` with constraint `Choice`.
This is useful if the typechecker has trouble inferring the tensor product to use.

Totality: total
Visibility: public export
right : Choicep=>pab->p (Eitherca) (Eithercb)
  A special case of `strongr` with constraint `Choice`.
This is useful if the typechecker has trouble inferring the tensor product to use.

Totality: total
Visibility: public export
uncurry' : Strongp=>pa (b->c) ->p (a, b) c
Totality: total
Visibility: public export
strong : Strongp=> (a->b->c) ->pab->pac
Totality: total
Visibility: public export
recordGenTambara : (Type->Type->Type) -> (Type->Type->Type) ->Type->Type->Type
  The comonad generated by the reflective subcategory of profunctors that
implement `GenStrong ten`.

Totality: total
Visibility: public export
Constructor: 
MkTambara : p (tenac) (tenbc) ->GenTambaratenpab

Projection: 
.runTambara : GenTambaratenpab->p (tenac) (tenbc)

Hints:
Bifunctorten=>Profunctorp=>Functor (GenTambaratenpa)
Associativeten=>Symmetricten=>Profunctorp=>GenStrongten (GenTambaratenp)
Bifunctorten=>Profunctorp=>Profunctor (GenTambaratenp)
ProfunctorAdjunction (GenPastroten) (GenTambaraten)
Tensorteni=>ProfunctorComonad (GenTambaraten)
ProfunctorFunctor (GenTambaraten)
.runTambara : GenTambaratenpab->p (tenac) (tenbc)
Totality: total
Visibility: public export
runTambara : GenTambaratenpab->p (tenac) (tenbc)
Totality: total
Visibility: public export
Tambara : (Type->Type->Type) ->Type->Type->Type
  The comonad generated by the reflective subcategory of profunctors that
implement `Strong`.

This is a special case of `GenTambara`.

Totality: total
Visibility: public export
TambaraSum : (Type->Type->Type) ->Type->Type->Type
  The comonad generated by the reflective subcategory of profunctors that
implement `Choice`.

This is a special case of `GenTambara`.

Totality: total
Visibility: public export
tambara : GenStrongtenp=>p:->q->p:->GenTambaratenq
Totality: total
Visibility: public export
untambara : Tensorteni=>Profunctorq=>p:->GenTambaratenq->p:->q
Totality: total
Visibility: public export
dataGenPastro : (Type->Type->Type) -> (Type->Type->Type) ->Type->Type->Type
  The monad generated by the reflective subcategory of profunctors that
implement `GenStrong ten`.

Totality: total
Visibility: public export
Constructor: 
MkPastro : (tenyz->b) ->pxy-> (a->tenxz) ->GenPastrotenpab

Hints:
(Associativeten, Symmetricten) =>GenStrongten (GenPastrotenp)
Profunctor (GenPastrotenp)
ProfunctorAdjunction (GenPastroten) (GenTambaraten)
ProfunctorFunctor (GenPastroten)
(Tensorteni, Symmetricten) =>ProfunctorMonad (GenPastroten)
Pastro : (Type->Type->Type) ->Type->Type->Type
  The monad generated by the reflective subcategory of profunctors that
implement `Strong`.

This is a special case of `GenPastro`.

Totality: total
Visibility: public export
PastroSum : (Type->Type->Type) ->Type->Type->Type
  The monad generated by the reflective subcategory of profunctors that
implement `Choice`.

This is a special case of `GenPastro`.

Totality: total
Visibility: public export
pastro : GenStrongtenq=>p:->q->GenPastrotenp:->q
Totality: total
Visibility: public export
unpastro : Tensorteni=>GenPastrotenp:->q->p:->q
Totality: total
Visibility: public export