License | BSD-style (see the file LICENSE) |
---|---|
Maintainer | sjoerd@w3future.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Category
class Category k where Source #
An instance of Category k
declares the arrow k
as a category.
Instances
Category k2 => Category (Op k2 :: k1 -> k1 -> Type) Source # |
|
Category Unit Source # |
|
Category Void Source # |
|
Category Simplex Source # | The (augmented) simplex category is the category of finite ordinals and order preserving maps. |
Category Cube Source # | |
Category Boolean Source # |
|
(Functor f, Dom f ~ (Op c :**: d), Cod f ~ ((->) :: Type -> Type -> Type), Category c, Category d) => Category (Cograph f :: Type -> Type -> Type) Source # | The cograph of the profunctor |
Category (Kleisli m :: Type -> Type -> Type) Source # | The category of Kleisli arrows. |
Category (f (Fix f)) => Category (Fix f :: Type -> Type -> Type) Source # |
|
ECategory k => Category (Underlying k :: Type -> Type -> Type) Source # | The underlying category of an enriched category |
Defined in Data.Category.Enriched src :: Underlying k a b -> Obj (Underlying k) a Source # tgt :: Underlying k a b -> Obj (Underlying k) b Source # (.) :: Underlying k b c -> Underlying k a b -> Underlying k a c Source # | |
Category ((->) :: Type -> Type -> Type) Source # | The category with Haskell types as objects and Haskell functions as arrows. |
(Category c1, Category c2) => Category (c1 :**: c2 :: Type -> Type -> Type) Source # | The product category of categories |
Category d => Category (Nat c d :: Type -> Type -> Type) Source # | Functor category D^C. Objects of D^C are functors from C to D. Arrows of D^C are natural transformations. |
(Category c1, Category c2) => Category (c1 :>>: c2 :: Type -> Type -> Type) Source # | |
(Category c1, Category c2) => Category (c1 :++: c2 :: Type -> Type -> Type) Source # | The coproduct category of categories |
Category (MonoidAsCategory f m :: Type -> Type -> Type) Source # | A monoid as a category with one object. |
Defined in Data.Category.Monoidal src :: MonoidAsCategory f m a b -> Obj (MonoidAsCategory f m) a Source # tgt :: MonoidAsCategory f m a b -> Obj (MonoidAsCategory f m) b Source # (.) :: MonoidAsCategory f m b c -> MonoidAsCategory f m a b -> MonoidAsCategory f m a c Source # | |
Category (Dialg f g :: Type -> Type -> Type) Source # | The category of (F,G)-dialgebras. |
(Category (Dom t), Category (Dom s)) => Category (t :/\: s :: Type -> Type -> Type) Source # | The comma category T \downarrow S |
Category Cat Source # |
|
Category AdjArrow Source # | The category with categories as objects and adjunctions as arrows. |
Whenever objects are required at value level, they are represented by their identity arrows.
type family Kind (k :: o -> o -> *) :: * where ... Source #
Kind k
is the kind of the objects of the category k
.
Kind (k :: o -> o -> *) = o |
Opposite category
Instances
Category k2 => Category (Op k2 :: k1 -> k1 -> Type) Source # |
|
HasBinaryProducts k2 => HasBinaryCoproducts (Op k2 :: k1 -> k1 -> Type) Source # | Binary products are the dual of binary coproducts. |
Defined in Data.Category.Limit type BinaryCoproduct (Op k2) x y :: Kind k Source # inj1 :: Obj (Op k2) x -> Obj (Op k2) y -> Op k2 x (BinaryCoproduct (Op k2) x y) Source # inj2 :: Obj (Op k2) x -> Obj (Op k2) y -> Op k2 y (BinaryCoproduct (Op k2) x y) Source # (|||) :: Op k2 x a -> Op k2 y a -> Op k2 (BinaryCoproduct (Op k2) x y) a Source # (+++) :: Op k2 a1 b1 -> Op k2 a2 b2 -> Op k2 (BinaryCoproduct (Op k2) a1 a2) (BinaryCoproduct (Op k2) b1 b2) Source # | |
HasBinaryCoproducts k2 => HasBinaryProducts (Op k2 :: k1 -> k1 -> Type) Source # | Binary products are the dual of binary coproducts. |
Defined in Data.Category.Limit type BinaryProduct (Op k2) x y :: Kind k Source # proj1 :: Obj (Op k2) x -> Obj (Op k2) y -> Op k2 (BinaryProduct (Op k2) x y) x Source # proj2 :: Obj (Op k2) x -> Obj (Op k2) y -> Op k2 (BinaryProduct (Op k2) x y) y Source # (&&&) :: Op k2 a x -> Op k2 a y -> Op k2 a (BinaryProduct (Op k2) x y) Source # (***) :: Op k2 a1 b1 -> Op k2 a2 b2 -> Op k2 (BinaryProduct (Op k2) a1 a2) (BinaryProduct (Op k2) b1 b2) Source # | |
HasTerminalObject k2 => HasInitialObject (Op k2 :: k1 -> k1 -> Type) Source # | Terminal objects are the dual of initial objects. |
Defined in Data.Category.Limit type InitialObject (Op k2) :: Kind k Source # initialObject :: Obj (Op k2) (InitialObject (Op k2)) Source # initialize :: Obj (Op k2) a -> Op k2 (InitialObject (Op k2)) a Source # | |
HasInitialObject k2 => HasTerminalObject (Op k2 :: k1 -> k1 -> Type) Source # | Terminal objects are the dual of initial objects. |
Defined in Data.Category.Limit type TerminalObject (Op k2) :: Kind k Source # terminalObject :: Obj (Op k2) (TerminalObject (Op k2)) Source # terminate :: Obj (Op k2) a -> Op k2 a (TerminalObject (Op k2)) Source # | |
Category k => CartesianClosed (Presheaves k :: Type -> Type -> Type) Source # | The category of presheaves on a category |
Defined in Data.Category.CartesianClosed type Exponential (Presheaves k) y z :: Kind k Source # apply :: Obj (Presheaves k) y -> Obj (Presheaves k) z -> Presheaves k (BinaryProduct (Presheaves k) (Exponential (Presheaves k) y z) y) z Source # tuple :: Obj (Presheaves k) y -> Obj (Presheaves k) z -> Presheaves k z (Exponential (Presheaves k) y (BinaryProduct (Presheaves k) z y)) Source # (^^^) :: Presheaves k z1 z2 -> Presheaves k y2 y1 -> Presheaves k (Exponential (Presheaves k) y1 z1) (Exponential (Presheaves k) y2 z2) Source # | |
type InitialObject (Op k2 :: k1 -> k1 -> Type) Source # | |
Defined in Data.Category.Limit | |
type TerminalObject (Op k2 :: k1 -> k1 -> Type) Source # | |
Defined in Data.Category.Limit | |
type BinaryCoproduct (Op k2 :: k1 -> k1 -> Type) (x :: Kind (Op k2)) (y :: Kind (Op k2)) Source # | |
Defined in Data.Category.Limit type BinaryCoproduct (Op k2 :: k1 -> k1 -> Type) (x :: Kind (Op k2)) (y :: Kind (Op k2)) = BinaryProduct k2 x y | |
type BinaryProduct (Op k2 :: k1 -> k1 -> Type) (x :: Kind (Op k2)) (y :: Kind (Op k2)) Source # | |
Defined in Data.Category.Limit type BinaryProduct (Op k2 :: k1 -> k1 -> Type) (x :: Kind (Op k2)) (y :: Kind (Op k2)) = BinaryCoproduct k2 x y | |
type Exponential (Presheaves k :: Type -> Type -> Type) (y :: Kind (Nat (Op k) ((->) :: Type -> Type -> Type))) (z :: Kind (Nat (Op k) ((->) :: Type -> Type -> Type))) Source # | |
Defined in Data.Category.CartesianClosed type Exponential (Presheaves k :: Type -> Type -> Type) (y :: Kind (Nat (Op k) ((->) :: Type -> Type -> Type))) (z :: Kind (Nat (Op k) ((->) :: Type -> Type -> Type))) = PShExponential k y z |