| License | BSD-style (see the file LICENSE) |
|---|---|
| Maintainer | sjoerd@w3future.com |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Category.Coproduct
Description
Synopsis
- data I1 a
- data I2 a
- data (:++:) :: (* -> * -> *) -> (* -> * -> *) -> * -> * -> * where
- data Inj1 (c1 :: * -> * -> *) (c2 :: * -> * -> *) = Inj1
- data Inj2 (c1 :: * -> * -> *) (c2 :: * -> * -> *) = Inj2
- data f1 :+++: f2 = f1 :+++: f2
- data CodiagCoprod (k :: * -> * -> *) = CodiagCoprod
- data Cotuple1 (c1 :: * -> * -> *) (c2 :: * -> * -> *) a = Cotuple1 (Obj c1 a)
- data Cotuple2 (c1 :: * -> * -> *) (c2 :: * -> * -> *) a = Cotuple2 (Obj c2 a)
- data Cograph f :: * -> * -> * where
- newtype (c1 :>>: c2) a b = DC (Cograph (Const (Op c1 :**: c2) (->) ()) a b)
- data NatAsFunctor f g = NatAsFunctor (Nat (Dom f) (Cod f) f g)
Documentation
Instances
| type (CodiagCoprod k) :% (I1 a) # | |
Defined in Data.Category.Coproduct | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) = I1 (BinaryCoproduct c1 a b) | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) = I1 (BinaryProduct c1 a b) | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit | |
| type (f1 :+++: f2) :% (I1 a) # | |
| type (NatAsFunctor f g) :% (a, I1 ()) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple2 c1 c2 a2) :% (I1 a) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple1 c1 c2 a1) :% (I1 a) # | |
Defined in Data.Category.Coproduct | |
Instances
| type (CodiagCoprod k) :% (I2 a) # | |
Defined in Data.Category.Coproduct | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) = I2 (BinaryCoproduct c2 a b) | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) = I2 (BinaryProduct c2 a b) | |
| type (f1 :+++: f2) :% (I2 a) # | |
| type (NatAsFunctor f g) :% (a, I2 ()) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple2 c1 c2 a2) :% (I2 a) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple1 c1 c2 a1) :% (I2 a) # | |
Defined in Data.Category.Coproduct | |
data (:++:) :: (* -> * -> *) -> (* -> * -> *) -> * -> * -> * where #
Constructors
| I1 :: c1 a1 b1 -> (:++:) c1 c2 (I1 a1) (I1 b1) | |
| I2 :: c2 a2 b2 -> (:++:) c1 c2 (I2 a2) (I2 b2) |
Instances
| (Category c1, Category c2) => Category (c1 :++: c2 :: Type -> Type -> Type) # | The coproduct category of categories |
| (HasColimits i k, HasColimits j k, HasBinaryCoproducts k) => HasColimits (i :++: j) k # | If |
Defined in Data.Category.Limit Methods colimit :: Obj (Nat (i :++: j) k) f -> Cocone (i :++: j) k f (ColimitFam (i :++: j) k f) # colimitFactorizer :: Cocone (i :++: j) k f n -> k (ColimitFam (i :++: j) k f) n # | |
| (HasLimits i k, HasLimits j k, HasBinaryProducts k) => HasLimits (i :++: j) k # | If |
| type ColimitFam (i :++: j) k f # | |
Defined in Data.Category.Limit type ColimitFam (i :++: j) k f = BinaryCoproduct k (ColimitFam i k (f :.: Inj1 i j)) (ColimitFam j k (f :.: Inj2 i j)) | |
| type LimitFam (i :++: j) k f # | |
Defined in Data.Category.Limit | |
data Inj1 (c1 :: * -> * -> *) (c2 :: * -> * -> *) #
Constructors
| Inj1 |
data Inj2 (c1 :: * -> * -> *) (c2 :: * -> * -> *) #
Constructors
| Inj2 |
Constructors
| f1 :+++: f2 |
data CodiagCoprod (k :: * -> * -> *) #
Constructors
| CodiagCoprod |
Instances
| Category k => Functor (CodiagCoprod k) # |
|
Defined in Data.Category.Coproduct Associated Types type Dom (CodiagCoprod k) :: Type -> Type -> Type # type Cod (CodiagCoprod k) :: Type -> Type -> Type # type (CodiagCoprod k) :% a # Methods (%) :: CodiagCoprod k -> Dom (CodiagCoprod k) a b -> Cod (CodiagCoprod k) (CodiagCoprod k :% a) (CodiagCoprod k :% b) # | |
| type Dom (CodiagCoprod k) # | |
Defined in Data.Category.Coproduct | |
| type Cod (CodiagCoprod k) # | |
Defined in Data.Category.Coproduct | |
| type (CodiagCoprod k) :% (I1 a) # | |
Defined in Data.Category.Coproduct | |
| type (CodiagCoprod k) :% (I2 a) # | |
Defined in Data.Category.Coproduct | |
data Cotuple1 (c1 :: * -> * -> *) (c2 :: * -> * -> *) a #
Instances
| (Category c1, Category c2) => Functor (Cotuple1 c1 c2 a1) # |
|
| type Dom (Cotuple1 c1 c2 a1) # | |
Defined in Data.Category.Coproduct | |
| type Cod (Cotuple1 c1 c2 a1) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple1 c1 c2 a1) :% (I1 a) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple1 c1 c2 a1) :% (I2 a) # | |
Defined in Data.Category.Coproduct | |
data Cotuple2 (c1 :: * -> * -> *) (c2 :: * -> * -> *) a #
Instances
| (Category c1, Category c2) => Functor (Cotuple2 c1 c2 a2) # |
|
| type Dom (Cotuple2 c1 c2 a2) # | |
Defined in Data.Category.Coproduct | |
| type Cod (Cotuple2 c1 c2 a2) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple2 c1 c2 a2) :% (I1 a) # | |
Defined in Data.Category.Coproduct | |
| type (Cotuple2 c1 c2 a2) :% (I2 a) # | |
Defined in Data.Category.Coproduct | |
data Cograph f :: * -> * -> * where #
Constructors
| I1A :: Dom f ~ (Op c :**: d) => c a1 b1 -> Cograph f (I1 a1) (I1 b1) | |
| I2A :: Dom f ~ (Op c :**: d) => d a2 b2 -> Cograph f (I2 a2) (I2 b2) | |
| I12 :: Dom f ~ (Op c :**: d) => Obj c a -> Obj d b -> f -> (f :% (a, b)) -> Cograph f (I1 a) (I2 b) |
The directed coproduct category of categories c1 and c2.
Instances
| (Category c1, Category c2) => Category (c1 :>>: c2 :: Type -> Type -> Type) # | |
| (HasBinaryCoproducts c1, HasBinaryCoproducts c2) => HasBinaryCoproducts (c1 :>>: c2 :: Type -> Type -> Type) # | |
Defined in Data.Category.Limit Associated Types type BinaryCoproduct (c1 :>>: c2) x y :: Kind k # Methods inj1 :: forall (x :: k) (y :: k). Obj (c1 :>>: c2) x -> Obj (c1 :>>: c2) y -> (c1 :>>: c2) x (BinaryCoproduct (c1 :>>: c2) x y) # inj2 :: forall (x :: k) (y :: k). Obj (c1 :>>: c2) x -> Obj (c1 :>>: c2) y -> (c1 :>>: c2) y (BinaryCoproduct (c1 :>>: c2) x y) # (|||) :: forall (x :: k) (a :: k) (y :: k). (c1 :>>: c2) x a -> (c1 :>>: c2) y a -> (c1 :>>: c2) (BinaryCoproduct (c1 :>>: c2) x y) a # (+++) :: 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) # | |
| (HasBinaryProducts c1, HasBinaryProducts c2) => HasBinaryProducts (c1 :>>: c2 :: Type -> Type -> Type) # | |
Defined in Data.Category.Limit Associated Types type BinaryProduct (c1 :>>: c2) x y :: Kind k # Methods proj1 :: forall (x :: k) (y :: k). Obj (c1 :>>: c2) x -> Obj (c1 :>>: c2) y -> (c1 :>>: c2) (BinaryProduct (c1 :>>: c2) x y) x # proj2 :: forall (x :: k) (y :: k). Obj (c1 :>>: c2) x -> Obj (c1 :>>: c2) y -> (c1 :>>: c2) (BinaryProduct (c1 :>>: c2) x y) y # (&&&) :: forall (a :: k) (x :: k) (y :: k). (c1 :>>: c2) a x -> (c1 :>>: c2) a y -> (c1 :>>: c2) a (BinaryProduct (c1 :>>: c2) x y) # (***) :: 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) # | |
| (HasInitialObject c1, Category c2) => HasInitialObject (c1 :>>: c2 :: Type -> Type -> Type) # | The initial object of the direct coproduct of categories is the initial object of the initial category. |
Defined in Data.Category.Limit Associated Types type InitialObject (c1 :>>: c2) :: Kind k # Methods initialObject :: Obj (c1 :>>: c2) (InitialObject (c1 :>>: c2)) # initialize :: forall (a :: k). Obj (c1 :>>: c2) a -> (c1 :>>: c2) (InitialObject (c1 :>>: c2)) a # | |
| (Category c1, HasTerminalObject c2) => HasTerminalObject (c1 :>>: c2 :: Type -> Type -> Type) # | The terminal object of the direct coproduct of categories is the terminal object of the terminal category. |
Defined in Data.Category.Limit Associated Types type TerminalObject (c1 :>>: c2) :: Kind k # Methods terminalObject :: Obj (c1 :>>: c2) (TerminalObject (c1 :>>: c2)) # terminate :: forall (a :: k). Obj (c1 :>>: c2) a -> (c1 :>>: c2) a (TerminalObject (c1 :>>: c2)) # | |
| (HasTerminalObject (i :>>: j), Category i, Category j, Category k) => HasColimits (i :>>: j) k # | The colimit of any diagram with a terminal object, has the limit at the terminal object. |
Defined in Data.Category.Limit Methods colimit :: Obj (Nat (i :>>: j) k) f -> Cocone (i :>>: j) k f (ColimitFam (i :>>: j) k f) # colimitFactorizer :: Cocone (i :>>: j) k f n -> k (ColimitFam (i :>>: j) k f) n # | |
| (HasInitialObject (i :>>: j), Category i, Category j, Category k) => HasLimits (i :>>: j) k # | The limit of any diagram with an initial object, has the limit at the initial object. |
| type InitialObject (c1 :>>: c2 :: Type -> Type -> Type) # | |
Defined in Data.Category.Limit | |
| type TerminalObject (c1 :>>: c2 :: Type -> Type -> Type) # | |
Defined in Data.Category.Limit | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) = I1 (BinaryCoproduct c1 a b) | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit type BinaryCoproduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) = I2 (BinaryCoproduct c2 a b) | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I1 b :: Type) = I1 (BinaryProduct c1 a b) | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I1 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I1 b :: Type) # | |
Defined in Data.Category.Limit | |
| type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) # | |
Defined in Data.Category.Limit type BinaryProduct (c1 :>>: c2 :: Type -> Type -> Type) (I2 a :: Type) (I2 b :: Type) = I2 (BinaryProduct c2 a b) | |
| type ColimitFam (i :>>: j) k f # | |
Defined in Data.Category.Limit | |
| type LimitFam (i :>>: j) k f # | |
Defined in Data.Category.Limit | |
data NatAsFunctor f g #
Constructors
| NatAsFunctor (Nat (Dom f) (Cod f) f g) |
Instances
| (Functor f, Functor g, Dom f ~ Dom g, Cod f ~ Cod g) => Functor (NatAsFunctor f g) # | A natural transformation |
Defined in Data.Category.Coproduct Associated Types type Dom (NatAsFunctor f g) :: Type -> Type -> Type # type Cod (NatAsFunctor f g) :: Type -> Type -> Type # type (NatAsFunctor f g) :% a # Methods (%) :: NatAsFunctor f g -> Dom (NatAsFunctor f g) a b -> Cod (NatAsFunctor f g) (NatAsFunctor f g :% a) (NatAsFunctor f g :% b) # | |
| type Dom (NatAsFunctor f g) # | |
Defined in Data.Category.Coproduct | |
| type Cod (NatAsFunctor f g) # | |
Defined in Data.Category.Coproduct | |
| type (NatAsFunctor f g) :% (a, I1 ()) # | |
Defined in Data.Category.Coproduct | |
| type (NatAsFunctor f g) :% (a, I2 ()) # | |
Defined in Data.Category.Coproduct | |