data-category-0.0.3.1: 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. But the typing issues with natural transformations in Hask make this problematic.

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