License | BSD-style (see the file LICENSE) |
---|---|
Maintainer | sjoerd@w3future.com |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Documentation
data (:**:) :: (* -> * -> *) -> (* -> * -> *) -> * -> * -> * where Source #
Instances
(Category c1, Category c2) => Category (c1 :**: c2 :: Type -> Type -> Type) Source # | The product category of categories |
(HasBinaryCoproducts c1, HasBinaryCoproducts c2) => HasBinaryCoproducts (c1 :**: c2 :: Type -> Type -> Type) Source # | The binary coproduct of the product of 2 categories is the product of their binary coproducts. |
Defined in Data.Category.Limit type BinaryCoproduct (c1 :**: c2) x y :: Kind k Source # inj1 :: Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) x (BinaryCoproduct (c1 :**: c2) x y) Source # inj2 :: Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) y (BinaryCoproduct (c1 :**: c2) x y) Source # (|||) :: (c1 :**: c2) x a -> (c1 :**: c2) y a -> (c1 :**: c2) (BinaryCoproduct (c1 :**: c2) x y) a Source # (+++) :: (c1 :**: c2) a1 b1 -> (c1 :**: c2) a2 b2 -> (c1 :**: c2) (BinaryCoproduct (c1 :**: c2) a1 a2) (BinaryCoproduct (c1 :**: c2) b1 b2) Source # | |
(HasBinaryProducts c1, HasBinaryProducts c2) => HasBinaryProducts (c1 :**: c2 :: Type -> Type -> Type) Source # | The binary product of the product of 2 categories is the product of their binary products. |
Defined in Data.Category.Limit type BinaryProduct (c1 :**: c2) x y :: Kind k Source # proj1 :: Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) (BinaryProduct (c1 :**: c2) x y) x Source # proj2 :: Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) (BinaryProduct (c1 :**: c2) x y) y Source # (&&&) :: (c1 :**: c2) a x -> (c1 :**: c2) a y -> (c1 :**: c2) a (BinaryProduct (c1 :**: c2) x y) Source # (***) :: (c1 :**: c2) a1 b1 -> (c1 :**: c2) a2 b2 -> (c1 :**: c2) (BinaryProduct (c1 :**: c2) a1 a2) (BinaryProduct (c1 :**: c2) b1 b2) Source # | |
(HasInitialObject c1, HasInitialObject c2) => HasInitialObject (c1 :**: c2 :: Type -> Type -> Type) Source # | The initial object of the product of 2 categories is the product of their initial objects. |
Defined in Data.Category.Limit type InitialObject (c1 :**: c2) :: Kind k Source # initialObject :: Obj (c1 :**: c2) (InitialObject (c1 :**: c2)) Source # initialize :: Obj (c1 :**: c2) a -> (c1 :**: c2) (InitialObject (c1 :**: c2)) a Source # | |
(HasTerminalObject c1, HasTerminalObject c2) => HasTerminalObject (c1 :**: c2 :: Type -> Type -> Type) Source # | The terminal object of the product of 2 categories is the product of their terminal objects. |
Defined in Data.Category.Limit type TerminalObject (c1 :**: c2) :: Kind k Source # terminalObject :: Obj (c1 :**: c2) (TerminalObject (c1 :**: c2)) Source # terminate :: Obj (c1 :**: c2) a -> (c1 :**: c2) a (TerminalObject (c1 :**: c2)) Source # | |
type InitialObject (c1 :**: c2 :: Type -> Type -> Type) Source # | |
Defined in Data.Category.Limit | |
type TerminalObject (c1 :**: c2 :: Type -> Type -> Type) Source # | |
Defined in Data.Category.Limit | |
type BinaryCoproduct (c1 :**: c2 :: Type -> Type -> Type) ((x1, x2) :: Kind (c1 :**: c2)) ((y1, y2) :: Kind (c1 :**: c2)) Source # | |
Defined in Data.Category.Limit type BinaryCoproduct (c1 :**: c2 :: Type -> Type -> Type) ((x1, x2) :: Kind (c1 :**: c2)) ((y1, y2) :: Kind (c1 :**: c2)) = (BinaryCoproduct c1 x1 y1, BinaryCoproduct c2 x2 y2) | |
type BinaryProduct (c1 :**: c2 :: Type -> Type -> Type) ((x1, x2) :: Kind (c1 :**: c2)) ((y1, y2) :: Kind (c1 :**: c2)) Source # | |
Defined in Data.Category.Limit type BinaryProduct (c1 :**: c2 :: Type -> Type -> Type) ((x1, x2) :: Kind (c1 :**: c2)) ((y1, y2) :: Kind (c1 :**: c2)) = (BinaryProduct c1 x1 y1, BinaryProduct c2 x2 y2) |