0 | module Data.Container.Base.Endofunctor.Instances
4 | import Data.Container.Base.Object.Definition
5 | import Data.Container.Base.Morphism.Definition
6 | import Data.Container.Base.Extension.Definition
7 | import Data.Container.Base.Product.Definition
8 | import Data.Container.Base.Endofunctor.Definition
15 | compositionBangPos : Functor m => m <!> (c >@ d) =%> c >@ (m <!> d)
16 | compositionBangPos = !% \ex => (
ex ** \(
cp ** md)
=> (\dp => (
cp ** dp)
) <$> md)
22 | joinBwComp : {0 c, d : Cont} -> {m : Type -> Type} -> Monad m =>
23 | m <!> (c >@ d) =%> m <!> (c >@ (m <!> d))
24 | joinBwComp = joinBw {c = c >@ d} %>> (m <!> compositionBangPos)
27 | coproductBang : m <!> (c >+< d) =%> (m <!> c) >+< (m <!> d)
28 | coproductBang = !% \case
29 | Left x => (
Left x ** id)
30 | Right y => (
Right y ** id)
33 | tensorBang : Applicative m => m <!> (c >< d) =%> (m <!> c) >< (m <!> d)
34 | tensorBang = !% \(x, y) => (
(x, y) ** \(mx', my') => [| (mx', my') |])
37 | compositionBang : Monoid d.Shp => !! (c >@ d) =%> (!! c) >@ (!! d)
38 | compositionBang = !% \(cShp <| cPosTodShp) => (
cShp <| ?extract
**
43 | compositionBangBack : Monad m => (m <!> c) >@ (m <!> d) =%> m <!> (c >@ d)
44 | compositionBangBack = !% \ex => (
shapeExt ex <| (index ex) . pure **