data-category-0.1.0: Restricted categories

Portabilitynon-portable
Stabilityexperimental
Maintainersjoerd@w3future.com

Data.Category.Kleisli

Description

This is an attempt at the Kleisli category, and the construction of an adjunction for each monad.

Documentation

class Pointed m whereSource

Methods

point :: m -> Id (Cod m) :~> mSource

Instances

(Dom m ~ (->), Cod m ~ (->), Pointed m) => Pointed (:.: (KleisliAdjG (->) m) (KleisliAdjF (->) m)) 

class Pointed m => Monad m whereSource

Methods

join :: m -> (m :.: m) :~> mSource

data Kleisli (~>) m a b Source

Constructors

Kleisli (m -> a ~> F m b) 

Instances

(Dom m ~ (->), Cod m ~ (->), Monad m) => CategoryO (Kleisli (->) m) o 
(Dom m ~ (->), Cod m ~ (->), Monad m, FunctorA m b (F m c)) => CategoryA (Kleisli (->) m) a b c 

data KleisliAdjF (~>) m Source

Constructors

KleisliAdjF m 

Instances

(Dom m ~ (->), Cod m ~ (->), Pointed m) => Pointed (:.: (KleisliAdjG (->) m) (KleisliAdjF (->) m)) 
(Dom m ~ (->), Cod m ~ (->), Monad m) => FunctorA (KleisliAdjF (->) m) a b 

data KleisliAdjG (~>) m Source

Constructors

KleisliAdjG m 

Instances

(Dom m ~ (->), Cod m ~ (->), Pointed m) => Pointed (:.: (KleisliAdjG (->) m) (KleisliAdjF (->) m)) 
(Dom m ~ (->), Cod m ~ (->), Monad m, FunctorA m a (F m b)) => FunctorA (KleisliAdjG (->) m) a b 

kleisliAdj :: (Monad m, Dom m ~ (->), Cod m ~ (->)) => m -> Adjunction (KleisliAdjF (->) m) (KleisliAdjG (->) m)Source