0 | module Control.Category
2 | import Data.Morphisms
6 | interface Category (0 cat : obj -> obj -> Type) | cat where
7 | constructor MkCategory
9 | (.) : cat b c -> cat a b -> cat a c
12 | Category Morphism where
16 | (Mor f) . (Mor g) = Mor $
Basics.(.) f g
19 | Monad m => Category (Kleislimorphism m) where
20 | id = Kleisli (pure . id)
21 | (Kleisli f) . (Kleisli g) = Kleisli $
\a => g a >>= f
26 | (>>>) : Category cat => cat a b -> cat b c -> cat a c