0 | module Control.Category.Semigroupoid
2 | import Control.Category.Core
3 | import Data.Morphisms
4 | import Data.Profunctor.Types
20 | interface Semigroupoid (0 cat : obj -> obj -> Type) | cat where
21 | constructor MkSemigroupoid
22 | (.) : {a,b,c : _} -> cat b c -> cat a b -> cat a c
29 | namespace Semigroupoid
32 | [FromCategory] Category cat => Semigroupoid cat where
41 | Semigroupoid Morphism where
42 | Mor f . Mor g = Mor (f . g)
44 | namespace Semigroupoid
46 | [Function] Semigroupoid (~~>) where
50 | Monad m => Semigroupoid (Kleislimorphism m) where
51 | Kleisli f . Kleisli g = Kleisli (f <=< g)
54 | Monad m => Semigroupoid (Star m) where
55 | MkStar f . MkStar g = MkStar (f <=< g)
58 | Semigroupoid Tagged where
59 | Tag x . Tag _ = Tag x