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