Portability | non-portable (class-associated types) |
---|---|
Stability | experimental |
Maintainer | Edward Kmett <ekmett@gmail.com> |
Safe Haskell | Safe-Infered |
- class (Cartesian <=, Symmetric <= (Product <=), Monoidal <= (Product <=)) => CCC (<=) where
- unitCCC :: CCC <= => a <= Exp <= b (Product <= b a)
- counitCCC :: CCC <= => Product <= b (Exp <= b a) <= a
- class (CoCartesian <=, Symmetric <= (Sum <=), Comonoidal <= (Sum <=)) => CoCCC (<=) where
- unitCoCCC :: CoCCC <= => a <= Sum <= b (Coexp <= b a)
- counitCoCCC :: (CoCCC <=, subtract ~ Coexp <=, + ~ Sum <=) => subtract b (b + a) <= a
Cartesian Closed Category
class (Cartesian <=, Symmetric <= (Product <=), Monoidal <= (Product <=)) => CCC (<=) whereSource
A CCC
has full-fledged monoidal finite products and exponentials
apply :: Product <= (Exp <= a b) a <= bSource
CCC (->) |
Co-(Cartesian Closed Category)
class (CoCartesian <=, Symmetric <= (Sum <=), Comonoidal <= (Sum <=)) => CoCCC (<=) whereSource
A Co-CCC has full-fledged comonoidal finite coproducts and coexponentials
counitCoCCC :: (CoCCC <=, subtract ~ Coexp <=, + ~ Sum <=) => subtract b (b + a) <= aSource