You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fold:: (forallxx. (fxx->a) -> (gx->lan)) -> (Lanfga->lan)
fold a (Lan b c) = a b c
-- as in paper, orfold'::Lanfga-> (foralllan. (forallxx. (fxx->a) -> (gxx->lan)) ->lan)
fold' (Lan a b) c = c a b
hoistLan:: (g~>g') -> (Lanfg~>Lanfg')
hoistLan tau = fold (\g ->Lan g . tau)
The tensor that is defined F ·_J G = Lan J F · G
dataComp:: (k->Type) -> (k->Type) -> (k'->Type) -> (k'->Type) whereComp:: (jxx->ga) -> (fxx->Compjfga)
foldComp:: (forallxx. (jxx->ga) -> (fxx->r)) -> (Compjfga->r)
foldComp f (Comp a b) = f a b
intro2::m~>Comprelmrel
intro2 =Compidelim1::Comprelrelm~>m
elim1 = foldComp iddisassoc::Comprel (Comprelfg) h~>Comprelf (Comprelgh)
disassoc = foldComp $\g -> foldComp $\f ->Comp (Comp g . f)
is really more useful with some kind of relative monad
classRelMonadmrelwhereroyalReturn::rel~>mrelativeBind:: (rela->mb) -> (ma->mb)
unit::RelMonadmrel=>rel~>m
unit = royalReturn
mult::RelMonadmrel=>Comprelmm~>m
mult = foldComp relativeBind
The text was updated successfully, but these errors were encountered:
Some of these may belong in
Data.Functor.Kan.Lan
.From Monads Need Not Be Endofunctors
The tensor that is defined
F ·_J G = Lan J F · G
is really more useful with some kind of relative monad
The text was updated successfully, but these errors were encountered: