| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Monoidal.Coclosed
Description
Coclosed monoidal categories, dual to Proarrow.Category.Monoidal.Closed: Coclosed provides
the coexponential a , left adjoint to tensoring, with <~~ bcoeval and its universal property
coevalUniv; CoCCC is the cocartesian coclosed case.
Synopsis
- class Monoidal k => Coclosed k where
- class (Cocartesian k, Coclosed k) => CoCCC k
Documentation
class Monoidal k => Coclosed k where Source Github #
A coclosed monoidal category, dual to Closed: the
coexponential a is left adjoint to tensoring with <~~ bb, so coevalUniv witnesses
Hom(a with <~~ b, c) ≅ Hom(a, c ** b)coeval as the unit.
Laws:
is a bijection, inverted bycoevalUniv\g -> (g:**id) .coeval(andcoevalUnivf**id) .coeval= fcoevalUniv((g**id) .coeval) = g- and natural in all three variables, dually to
curry.
Unlike those of Closed, these laws have no check in
Proarrow.Testing.Laws.
Methods
withObCoExp :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a <~~ b) => r) -> r Source Github #
Recovers from the objecthood of the ends.Ob (a <~~ b)
coeval :: forall (a :: k) (b :: k). (Ob a, Ob b) => a ~> ((a <~~ b) ** b) Source Github #
Co-evaluation: the unit of the adjunction.
coevalUniv :: forall (b :: k) (c :: k) (a :: k). (Ob b, Ob c) => (a ~> (c ** b)) -> (a <~~ b) ~> c Source Github #
Transposes an arrow into a tensor into one out of a coexponential.
Instances
| Coclosed () Source Github # | |||||
Defined in Proarrow.Category.Monoidal.Coclosed Associated Types
Methods withObCoExp :: forall (a :: ()) (b :: ()) r. (Ob a, Ob b) => (Ob (a <~~ b) => r) -> r Source Github # coeval :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => a ~> ((a <~~ b) ** b) Source Github # coevalUniv :: forall (b :: ()) (c :: ()) (a :: ()). (Ob b, Ob c) => (a ~> (c ** b)) -> (a <~~ b) ~> c Source Github # | |||||
| Coclosed (Type -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Nat Methods withObCoExp :: forall (a :: Type -> Type) (b :: Type -> Type) r. (Ob a, Ob b) => (Ob (a <~~ b) => r) -> r Source Github # coeval :: forall (a :: Type -> Type) (b :: Type -> Type). (Ob a, Ob b) => a ~> ((a <~~ b) ** b) Source Github # coevalUniv :: forall (b :: Type -> Type) (c :: Type -> Type) (a :: Type -> Type). (Ob b, Ob c) => (a ~> (c ** b)) -> (a <~~ b) ~> c Source Github # | |||||
class (Cocartesian k, Coclosed k) => CoCCC k Source Github #
Instances
| (Cocartesian k, Coclosed k) => CoCCC k Source Github # | |
Defined in Proarrow.Category.Monoidal.Coclosed | |