forked from GitHub/gf-core
incomplete code for adjoints and monads
This commit is contained in:
11
examples/category-theory/Adjoints.gf
Normal file
11
examples/category-theory/Adjoints.gf
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
abstract Adjoints = NaturalTransform ** {
|
||||||
|
|
||||||
|
cat Adjoints ({c1,c2} : Category) (Functor c1 c2) (Functor c2 c1) ;
|
||||||
|
|
||||||
|
data adjoints : ({c1,c2} : Category)
|
||||||
|
-> (f : Functor c1 c2)
|
||||||
|
-> (g : Functor c2 c1)
|
||||||
|
-> NT (idF c1) (compF g f)
|
||||||
|
-> Adjoints f g ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,5 +5,7 @@ abstract CategoryTheory
|
|||||||
, Functor
|
, Functor
|
||||||
, NaturalTransform
|
, NaturalTransform
|
||||||
, Equalizer
|
, Equalizer
|
||||||
|
, Adjoints
|
||||||
|
, Monad
|
||||||
** {
|
** {
|
||||||
}
|
}
|
||||||
30
examples/category-theory/Monad.gf
Normal file
30
examples/category-theory/Monad.gf
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
abstract Monad = Adjoints ** {
|
||||||
|
|
||||||
|
cat Monad ({c} : Category) (m : Functor c c) ;
|
||||||
|
|
||||||
|
data monad : ({c} : Category)
|
||||||
|
-> (m : Functor c c)
|
||||||
|
-> NT (compF m m) m
|
||||||
|
-> NT (idF c) m
|
||||||
|
-> Monad m ;
|
||||||
|
|
||||||
|
fun adjoints2monad : ({c,d} : Category)
|
||||||
|
-> (f : Functor c d)
|
||||||
|
-> (g : Functor d c)
|
||||||
|
-> Adjoints f g
|
||||||
|
-> Monad (compF g f) ;
|
||||||
|
-- def adjoints2monad = ...
|
||||||
|
|
||||||
|
{-
|
||||||
|
fun kleisliCat : ({c} : Category)
|
||||||
|
-> ({m} : Functor c c)
|
||||||
|
-> Monad m
|
||||||
|
-> Category ;
|
||||||
|
|
||||||
|
fun monad2adjoints : ({c} : Category)
|
||||||
|
-> ({m} : Functor c c)
|
||||||
|
-> Monad m
|
||||||
|
-> Adjoints {c} {kleisliCat m} f g
|
||||||
|
-}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user