module Pandora.Pattern.Category (Category (..)) where

infixr 8 .
infixr 0 $

class Category (m :: * -> * -> *) where
        identity :: m a a
        (.) :: m b c -> m a b -> m a c

        ($) :: m a b -> m a b
        ($) f = identity . f

instance Category (->) where
        identity x = x
        f . g = \x -> f (g x)