0 | module Control.Category.Comonad
2 | import Control.Category.Core
3 | import Control.Category.Functor
4 | import Control.Category.Monoidal
5 | import Control.Category.MonFunctor
6 | import Data.Morphisms
27 | interface CatFunctor cat cat w => CatComonad
29 | (0 w : obj -> obj) | cat,w where
30 | constructor MkCatComonad
32 | cojoin : {a : _} -> cat (w a) (w (w a))
34 | counit : {a : _} -> cat (w a) a
45 | StrongComonad : (cat : Hom obj) -> (ten : obj -> obj -> obj) -> (w : obj -> obj) -> Type
46 | StrongComonad cat ten w = (CatComonad cat w, CostrongFunctor cat ten w)
53 | namespace CatComonad
55 | [Id] Category cat => CatComonad cat Prelude.id
56 | using CatFunctor.Id where
60 | namespace StrongComonad
62 | Id : {ten : _} -> Category cat => StrongComonad cat ten Prelude.id