module Pandora.Pattern.Category (Category (..)) where import Pandora.Core.Functor (type (~~>)) infixr 8 . infixl 1 / infixr 0 $ class Category (m :: * -> * -> *) where identity :: m a a (.) :: m b c -> m a b -> m a c ($) :: m ~~> m ($) m a b f = m b b forall (m :: * -> * -> *) a. Category m => m a a identity m b b -> m a b -> m a b forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . m a b f (/) :: m ~~> m (/) m a b f = m b b forall (m :: * -> * -> *) a. Category m => m a a identity m b b -> m a b -> m a b forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . m a b f