| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Colimit.Coequalizer
Contents
Synopsis
- class CategoryOf k => HasCoequalizers k where
- thinCoequalize :: forall {k} (a :: k) (b :: k) r. Thin k => (a ~> b) -> (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r
- thinFactorCoequalizer :: forall {k} (a :: k) (b :: k) (c :: k). Thin k => (a ~> b) -> (a ~> b) -> (b ~> c) -> (Hom k :.: Hom k) b c
- pushoutDefault :: forall {k} (o :: k) (a :: k) (b :: k) r. (HasCoequalizers k, HasCoproducts k) => (o ~> a) -> (o ~> b) -> (forall (p :: k). (a ~> p) -> (b ~> p) -> r) -> r
- cokernel :: forall k (a :: k) (b :: k) r. (HasCoequalizers k, HasZeroObject k) => (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r
Documentation
class CategoryOf k => HasCoequalizers k where Source Github #
Coequalizers are an inherently dependently typed concept: The type of the apex object depends on the values of the given arrows. But at runtime we can still calculate the arrow and the type, which we hide behind an existential.
Minimal complete definition
Methods
coequalize :: forall (a :: k) (b :: k) r. (a ~> b) -> (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r Source Github #
default coequalize :: forall (a :: k) (b :: k) r. HasTerminalObject k => (a ~> b) -> (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r Source Github #
factorCoequalizer :: forall (a :: k) (b :: k) (c :: k). (a ~> b) -> (a ~> b) -> (b ~> c) -> (Hom k :.: Hom k) b c Source Github #
Instances
thinCoequalize :: forall {k} (a :: k) (b :: k) r. Thin k => (a ~> b) -> (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r Source Github #
In a thin category, arrows don't carry information, so coequalizers are just coproducts.
thinFactorCoequalizer :: forall {k} (a :: k) (b :: k) (c :: k). Thin k => (a ~> b) -> (a ~> b) -> (b ~> c) -> (Hom k :.: Hom k) b c Source Github #
pushoutDefault :: forall {k} (o :: k) (a :: k) (b :: k) r. (HasCoequalizers k, HasCoproducts k) => (o ~> a) -> (o ~> b) -> (forall (p :: k). (a ~> p) -> (b ~> p) -> r) -> r Source Github #
cokernel :: forall k (a :: k) (b :: k) r. (HasCoequalizers k, HasZeroObject k) => (a ~> b) -> (forall (c :: k). (b ~> c) -> r) -> r Source Github #
Orphan instances
| HasCoequalizers k => HasEqualizers (OPPOSITE k) Source Github # | |
Methods equalize :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (a ~> b) -> (a ~> b) -> (forall (e :: OPPOSITE k). (e ~> a) -> r) -> r Source Github # factorEqualizer :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (a ~> b) -> (a ~> b) -> (c ~> a) -> (Hom (OPPOSITE k) :.: Hom (OPPOSITE k)) c a Source Github # | |