extended-categories-0.1.0: Extended Categories

Safe HaskellNone
LanguageHaskell2010

NaturalTransformation

Documentation

data NatTr c1 c2 f g where Source

Constructors

NatTr :: (Object (NatTr c1 c2) f, Object (NatTr c1 c2) g) => (forall a. Object c1 a => Tagged a (c2 (FMap f a :: o2) (FMap g a :: o2))) -> NatTr (c1 :: o1 -> o1 -> *) (c2 :: o2 -> o2 -> *) f g 

Instances

(Category o1 c1, Category o2 c2) => Category * (NatTr o1 o2 c1 c2) 
Category k c => Monoidal * (NatTr k k c c) 
type Mu * (NatTr k k c c) = CompFF k k k c c c 
type I * (NatTr k k c c) = IdentityF k c 
type Object * (NatTr o1 o2 c1 c2) f = (Functor o1 o2 f (KProxy (o1 -> o2)), (~) (o1 -> o1 -> *) (Domain o1 f) c1, (~) (o2 -> o2 -> *) (Codomain o2 f) c2) 

data CompFF c1 c2 c3 where Source

Constructors

CompFF :: (Category c1, Category c2, Category c3) => CompFF c1 c2 c3 

Instances

(Category o1 c1, Category o2 c2, Category o3 c3) => Functor ((,) * *) * (CompFF o1 o2 o3 c1 c2 c3) (KProxy ((,) * * -> *)) 
type Codomain * (CompFF o1 o2 o3 c1 c2 c3) = NatTr o1 o3 c1 c3 
type FMap ((,) * *) * (CompFF o1 o2 o3 c1 c2 c3) ((,) * * f g) = Comp o2 (KProxy o2) f g 
type Domain ((,) * *) (CompFF o1 o2 o3 c1 c2 c3) = (:><:) * * * * (NatTr o2 o3 c2 c3) (NatTr o1 o2 c1 c2) 

compNat :: forall c1 c2 c3 f1 f2 g1 g2. NatTr c2 c3 f1 g1 -> NatTr c1 c2 f2 g2 -> NatTr c1 c3 (Comp (KProxy :: KProxy o2) f1 f2) (Comp (KProxy :: KProxy o2) g1 g2) Source