Portability | non-portable (class-associated types) |
---|---|
Stability | experimental |
Maintainer | Edward Kmett <ehommett@gmail.com> |
NB: Some rewrite rules are disabled pending resolution of: http://hackage.haskell.org/trac/ghc/ticket/2291
- class (Monoidal hom prod i, Cartesian hom prod i) => CCC hom prod exp i | hom -> prod exp i where
- unitCCC :: CCC hom prod exp i => hom a (exp b (prod b a))
- counitCCC :: CCC hom prod exp i => hom (prod b (exp b a)) a
- class (Comonoidal hom sum i, CoCartesian hom sum i) => CoCCC hom sum coexp i | hom -> sum coexp i where
- unitCoCCC :: CoCCC hom sum coexp i => hom a (sum b (coexp hom b a))
- counitCoCCC :: CoCCC hom sum coexp i => hom (coexp hom b (sum b a)) a
Cartesian Closed Category
class (Monoidal hom prod i, Cartesian hom prod i) => CCC hom prod exp i | hom -> prod exp i whereSource
A CCC
has full-fledged monoidal finite products and exponentials
Co-(Cartesian Closed Category)
class (Comonoidal hom sum i, CoCartesian hom sum i) => CoCCC hom sum coexp i | hom -> sum coexp i whereSource
A Co-CCC has full-fledged comonoidal finite coproducts and coexponentials
counitCoCCC :: CoCCC hom sum coexp i => hom (coexp hom b (sum b a)) aSource