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
|
||||
, NaturalTransform
|
||||
, 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