0 | module Control.Category.Monad
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 m => CatMonad
29 | (0 m : obj -> obj) | cat,m where
30 | constructor MkCatMonad
32 | join : {a : _} -> cat (m (m a)) (m a)
34 | unit : {a : _} -> cat a (m a)
45 | StrongMonad : (cat : Hom obj) -> (ten : obj -> obj -> obj) -> (m : obj -> obj) -> Type
46 | StrongMonad cat ten m = (CatMonad cat m, StrongFunctor cat ten m)
55 | [Id] Category cat => CatMonad cat Prelude.id
56 | using CatFunctor.Id where
60 | namespace StrongMonad
62 | Id : {ten : _} -> Category cat => StrongMonad cat ten Prelude.id
73 | [MorFromMonad] Monad m => CatMonad Morphism m
74 | using CatFunctor.MorFromFunctor where
81 | [FuncFromMonad] Monad m => CatMonad (~~>) m
82 | using CatFunctor.FuncFromFunctor where
86 | namespace StrongMonad
89 | MorFromMonad : Monad m => Bitraversable ten => StrongMonad Morphism ten m
90 | MorFromMonad = (MorFromMonad, MorFromApplicative)
95 | FuncFromMonad : Monad m => Bitraversable ten => StrongMonad (~~>) ten m
96 | FuncFromMonad = (FuncFromMonad, FuncFromApplicative)