| category-extras-0.53.6: Various modules and constructs inspired by category theory | Contents | Index |
|
Control.Category.Cartesian.Closed | Portability | non-portable (class-associated types) | Stability | experimental | Maintainer | Edward Kmett <ehommett@gmail.com> |
|
|
|
|
|
Description |
NB: Some rewrite rules are disabled pending resolution of:
http://hackage.haskell.org/trac/ghc/ticket/2291
|
|
Synopsis |
|
class (Monoidal hom prod i, Cartesian hom prod i) => CCC hom prod exp i | hom -> prod exp i where | apply :: hom (prod (exp a b) a) b | curry :: hom (prod a b) c -> hom a (exp b c) | uncurry :: hom a (exp b c) -> hom (prod a b) c |
| | 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 | coapply :: hom b (sum (coexp hom a b) a) | cocurry :: hom c (sum a b) -> hom (coexp hom b c) a | uncocurry :: hom (coexp hom b c) a -> hom c (sum a b) |
| | 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 where |
A CCC has full-fledged monoidal finite products and exponentials
| | Methods | apply :: hom (prod (exp a b) a) b | | curry :: hom (prod a b) c -> hom a (exp b c) | | uncurry :: hom a (exp b c) -> hom (prod a b) c |
|
|
|
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 |
|
Co-(Cartesian Closed Category)
|
|
class (Comonoidal hom sum i, CoCartesian hom sum i) => CoCCC hom sum coexp i | hom -> sum coexp i where |
A Co-CCC has full-fledged comonoidal finite coproducts and coexponentials
| | Methods | coapply :: hom b (sum (coexp hom a b) a) | | cocurry :: hom c (sum a b) -> hom (coexp hom b c) a | | uncocurry :: hom (coexp hom b c) a -> hom c (sum a b) |
|
|
|
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 |
|
Produced by Haddock version 2.1.0 |