category-extras-0.52.0: Various modules and constructs inspired by category theory

Portabilitynon-portable (rank-2 polymorphism)
MaintainerEdward Kmett <>



Traditional operators, shown here to show how to roll your own


apo :: Functor f => GCoalgebra f (Apo f) a -> a -> FixF fSource

type Apo f a = Either (FixF f) aSource

type ApoT f m a = EitherT (FixF f) m aSource

distApoT :: (Functor f, Monad m) => Dist m f -> Dist (ApoT f m) fSource

g_apo :: Functor f => Coalgebra f b -> GCoalgebra f (GApo b) a -> a -> FixF fSource

type GApo b a = Either b aSource

type GApoT b m a = EitherT b m aSource

distGApoT :: (Functor f, Monad m) => GCoalgebra f m b -> Dist m f -> Dist (EitherT b m) fSource