| Portability | non-portable (either class-associated types or MPTCs with fundeps) |
|---|---|
| Stability | experimental |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
Control.Category.Object
Description
This module declares the HasTerminalObject and HasInitialObject classes.
These are defined in terms of class-associated types rather than functional dependencies
because most of the time when you are manipulating a category you don't care about them;
this gets them out of the signature of most functions that use the category.
Both of these are special cases of the idea of a (co)limit.
- class Category k => HasTerminalObject k t | k -> t where
- terminate :: k a t
- class Category k => HasInitialObject k i | k -> i where
- initiate :: k i a
Documentation
class Category k => HasTerminalObject k t | k -> t whereSource
The Category k has a terminal object Terminal k such that for all objects a in k,
there exists a unique morphism from a to Terminal k.
class Category k => HasInitialObject k i | k -> i whereSource
The Category k has an initial (coterminal) object Initial k such that for all objects
a in k, there exists a unique morphism from Initial k to a.