| License | BSD-style (see the file LICENSE) |
|---|---|
| Maintainer | sjoerd@w3future.com |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.Category.Product
Description
Documentation
data (:**:) :: (Type -> Type -> Type) -> (Type -> Type -> Type) -> Type -> Type -> Type where Source #
Instances
| (Category c1, Category c2) => Category (c1 :**: c2 :: Type -> Type -> Type) Source # | The product category of categories |
Defined in Data.Category.Product | |
| (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 Associated Types type BinaryCoproduct (c1 :**: c2) x y :: Kind k Source # Methods inj1 :: forall (x :: k) (y :: k). Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) x (BinaryCoproduct (c1 :**: c2) x y) Source # inj2 :: forall (x :: k) (y :: k). Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) y (BinaryCoproduct (c1 :**: c2) x y) Source # (|||) :: forall (x :: k) (a :: k) (y :: k). (c1 :**: c2) x a -> (c1 :**: c2) y a -> (c1 :**: c2) (BinaryCoproduct (c1 :**: c2) x y) a Source # (+++) :: forall (a1 :: k) (b1 :: k) (a2 :: k) (b2 :: k). (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 Associated Types type BinaryProduct (c1 :**: c2) x y :: Kind k Source # Methods proj1 :: forall (x :: k) (y :: k). Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) (BinaryProduct (c1 :**: c2) x y) x Source # proj2 :: forall (x :: k) (y :: k). Obj (c1 :**: c2) x -> Obj (c1 :**: c2) y -> (c1 :**: c2) (BinaryProduct (c1 :**: c2) x y) y Source # (&&&) :: forall (a :: k) (x :: k) (y :: k). (c1 :**: c2) a x -> (c1 :**: c2) a y -> (c1 :**: c2) a (BinaryProduct (c1 :**: c2) x y) Source # (***) :: forall (a1 :: k) (b1 :: k) (a2 :: k) (b2 :: k). (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 Associated Types type InitialObject (c1 :**: c2) :: Kind k Source # Methods initialObject :: Obj (c1 :**: c2) (InitialObject (c1 :**: c2)) Source # initialize :: forall (a :: k). 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 Associated Types type TerminalObject (c1 :**: c2) :: Kind k Source # Methods terminalObject :: Obj (c1 :**: c2) (TerminalObject (c1 :**: c2)) Source # terminate :: forall (a :: k). 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) | |