2 | module Control.Category.Instances.One
4 | import Control.Category
5 | import Control.Category.Records
12 | data One : (a,b : ()) -> Type where
20 | UnitOp2 : a -> b -> ()
31 | MkOne . MkOne = MkOne
34 | SemigroupoidOne : Semigroupoid One
35 | SemigroupoidOne = FromCategory
39 | CatFunctor cat One UnitOp where
43 | CatMonad One UnitOp where
48 | CatBifunctor catA catB One UnitOp2 where
52 | Monoidal One UnitOp2 () where
55 | unitl {a=()} = MkOne
56 | unitl' {a=()} = MkOne
57 | unitr {a=()} = MkOne
58 | unitr' {a=()} = MkOne
61 | Braided One UnitOp2 () where
66 | Cartesian One UnitOp2 () where
67 | projl {a=()} = MkOne
68 | projr {b=()} = MkOne
69 | prod {a=()} _ _ = MkOne
70 | split {a=()} = MkOne
74 | Cocartesian One UnitOp2 () where
77 | coprod {b=()} _ _ = MkOne
78 | merge {a=()} = MkOne
79 | intro {a=()} = MkOne
82 | Closed One UnitOp2 UnitOp2 () where
83 | curry {a=()} _ = MkOne
84 | uncurry {c=()} _ = MkOne
87 | Traced One UnitOp2 () where
88 | tracel {b=(),c=()} _ = MkOne
89 | tracer {a=(),b=()} _ = MkOne
92 | Bimonoidal One UnitOp2 UnitOp2 () () where
107 | namespace SemigroupoidR
109 | One : SemigroupoidR
110 | One = MkSemigroupoidR One
112 | namespace CategoryR
115 | One = MkCategoryR One
117 | namespace MonoidalR
120 | One = MkMonoidalR One UnitOp2 ()
125 | One = MkBraidedR One UnitOp2 ()
127 | namespace CartesianR
130 | One = MkCartesianR One UnitOp2 ()
132 | namespace CocartesianR
135 | One = MkCocartesianR One UnitOp2 ()
140 | One = MkClosedR One UnitOp2 UnitOp2 ()
145 | One = MkTracedR One UnitOp2 ()
147 | namespace BimonoidalR
150 | One = MkBimonoidalR One UnitOp2 UnitOp2 () ()
152 | namespace RigCategoryR
155 | One = MkRigCategoryR One UnitOp2 UnitOp2 () ()
157 | namespace SymRigCategoryR
159 | One : SymRigCategoryR
160 | One = MkSymRigCategoryR One UnitOp2 UnitOp2 () ()
162 | namespace DistributiveR
164 | One : DistributiveR
165 | One = MkDistributiveR One UnitOp2 UnitOp2 () ()
170 | OneTerminal : FunctorR cat One
171 | OneTerminal = MkFunctorR UnitOp
176 | OneM = MkMonadR UnitOp
178 | namespace BifunctorR
180 | OneBi : BifunctorR catA catB One
181 | OneBi = MkBifunctorR UnitOp2