Tealeaves.Classes.Categorical.DecoratedTraversableFunctor
From Tealeaves Require Export
Classes.Categorical.DecoratedFunctor
Classes.Categorical.TraversableFunctor.
Import Monoid.Notations.
Import Strength.Notations.
Import Product.Notations.
Import TraversableFunctor.Notations.
Import Strength.Notations.
#[local] Generalizable Variables T E G A B C W op zero F ϕ.
Classes.Categorical.DecoratedFunctor
Classes.Categorical.TraversableFunctor.
Import Monoid.Notations.
Import Strength.Notations.
Import Product.Notations.
Import TraversableFunctor.Notations.
Import Strength.Notations.
#[local] Generalizable Variables T E G A B C W op zero F ϕ.
#[local] Arguments map F%function_scope {Map}
{A B}%type_scope f%function_scope _.
#[local] Arguments dist F%function_scope {ApplicativeDist}
G%function_scope {H H0 H1} {A}%type_scope _.
{A B}%type_scope f%function_scope _.
#[local] Arguments dist F%function_scope {ApplicativeDist}
G%function_scope {H H0 H1} {A}%type_scope _.
Class DecoratedTraversableFunctor
(E: Type)
(F: Type → Type)
`{Map F} `{Decorate E F} `{ApplicativeDist F} :=
{ dtfun_decorated :> DecoratedFunctor E F;
dtfun_traversable :> TraversableFunctor F;
dtfun_compat: ∀ `{Applicative G},
`(dist F G ∘ map F σ ∘ dec F (A := G A) =
map G (dec F) ∘ dist F G);
}.
(E: Type)
(F: Type → Type)
`{Map F} `{Decorate E F} `{ApplicativeDist F} :=
{ dtfun_decorated :> DecoratedFunctor E F;
dtfun_traversable :> TraversableFunctor F;
dtfun_compat: ∀ `{Applicative G},
`(dist F G ∘ map F σ ∘ dec F (A := G A) =
map G (dec F) ∘ dist F G);
}.