| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Instance.Monoid
Description
A monoid as a one-object category: the single object M, with the monoid's elements
as the morphisms. For a commutative monoid the tensor is the monoid operation
itself, making it symmetric monoidal, Unit ~> mClosed, StarAutonomous and CompactClosed, with a
cocommutative comonoid on M and hence CopyDiscard.
It is deliberately not cartesian or cocartesian. A one-object category has a terminal object
only when its hom-set is a singleton, and likewise has binary products only when forces fst . (f
&&& g) = f -- both hold only for the trivial monoid. The
corresponding instances would be unlawful for every other combine f g = fm, so they are omitted rather than
given a definition that type-checks.
Documentation
data MONOID (m :: k) Source Github #
Constructors
| M |
Instances
| Monoid m => Enumerable (MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| Finite (MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid Associated Types
| |||||
| Indexed (MONOID m) Source Github # | A monoid is a one-object category, so its kind has one inhabitant, at index zero. Said directly
rather than left to the | ||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| CommutativeMonoid m => Monoidal (MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid Associated Types
Methods withOb2 :: forall (a :: MONOID m) (b :: MONOID m) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: MONOID m). Ob a => ((Unit :: MONOID m) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: MONOID m). Ob a => a ~> ((Unit :: MONOID m) ** a) Source Github # rightUnitor :: forall (a :: MONOID m). Ob a => (a ** (Unit :: MONOID m)) ~> a Source Github # rightUnitorInv :: forall (a :: MONOID m). Ob a => a ~> (a ** (Unit :: MONOID m)) Source Github # associator :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||
| CommutativeMonoid m => SymMonoidal (MONOID m) Source Github # | |||||
| CommutativeMonoid m => Closed (MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid Methods withObExp :: forall (a :: MONOID m) (b :: MONOID m) r. (Ob a, Ob b) => (Ob (a ~~> b) => r) -> r Source Github # curry :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b) => ((a ** b) ~> c) -> a ~> (b ~~> c) Source Github # apply :: forall (a :: MONOID m) (b :: MONOID m). (Ob a, Ob b) => ((a ~~> b) ** a) ~> b Source Github # (^^^) :: forall (a :: MONOID m) (b :: MONOID m) (x :: MONOID m) (y :: MONOID m). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Github # | |||||
| CommutativeMonoid m => CompactClosed (MONOID m) Source Github # | |||||
| CommutativeMonoid m => CopyDiscard (MONOID m) Source Github # | |||||
| CommutativeMonoid m => StarAutonomous (MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid Methods withObDual :: forall (a :: MONOID m) r. Ob a => (Ob (Dual a) => r) -> r Source Github # dual :: forall (a :: MONOID m) (b :: MONOID m). (a ~> b) -> Dual b ~> Dual a Source Github # dualInv :: forall (a :: MONOID m) (b :: MONOID m). (Ob a, Ob b) => (Dual a ~> Dual b) -> b ~> a Source Github # linDist :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => ((a ** b) ~> Dual c) -> a ~> Dual (b ** c) Source Github # linDistInv :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => (a ~> Dual (b ** c)) -> (a ** b) ~> Dual c Source Github # | |||||
| Monoid m => CategoryOf (MONOID m) Source Github # | A monoid as a one object category. | ||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| CommutativeMonoid m => CocommutativeComonoid ('M :: MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| CommutativeMonoid m => Comonoid ('M :: MONOID m) Source Github # | |||||
| Monoid m => EnrichedProfunctor (Clone k) (Mon :: MONOID m -> MONOID m -> Type) Source Github # | A monoid is a one object enriched category. | ||||
Defined in Proarrow.Category.Enriched Methods withProObj :: forall (a :: MONOID m) (b :: MONOID m) r. (Ob a, Ob b) => (Ob (ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) => r) -> r Source Github # underlying :: forall (a :: MONOID m) (b :: MONOID m). Mon a b -> (Unit :: Clone k) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b Source Github # enriched :: forall (a :: MONOID m) (b :: MONOID m). (Ob a, Ob b) => ((Unit :: Clone k) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) -> Mon a b Source Github # rmap :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => (HomObj (Clone k) b c ** ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a c Source Github # lmap :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => (HomObj (Clone k) c a ** ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) c b Source Github # | |||||
| CommutativeMonoid m => MonoidalProfunctor (Mon :: MONOID m -> MONOID m -> Type) Source Github # | |||||
| Monoid m => Profunctor (Mon :: MONOID m -> MONOID m -> Type) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid Methods dimap :: forall (c :: MONOID m) (a :: MONOID m) (b :: MONOID m) (d :: MONOID m). (c ~> a) -> (b ~> d) -> Mon a b -> Mon c d Source Github # lmap :: forall (c :: MONOID m) (a :: MONOID m) (b :: MONOID m). (c ~> a) -> Mon a b -> Mon c b Source Github # rmap :: forall (b :: MONOID m) (d :: MONOID m) (a :: MONOID m). (b ~> d) -> Mon a b -> Mon a d Source Github # (\\) :: forall (a :: MONOID m) (b :: MONOID m) r. ((Ob a, Ob b) => r) -> Mon a b -> r Source Github # | |||||
| Monoid m => Promonad (Mon :: MONOID m -> MONOID m -> Type) Source Github # | |||||
| type Objects (MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| type Unit Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| type (~>) Source Github # | |||||
| type At (MONOID m) i Source Github # | |||||
| type Index (a :: MONOID m) Source Github # | |||||
Defined in Proarrow.Category.Instance.Monoid | |||||
| type Ob (a :: MONOID m) Source Github # | |||||
| type (a :: MONOID m) ~~> (b :: MONOID m) Source Github # | |||||
| type Dual ('M :: MONOID m) Source Github # | |||||
| type ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) ('M :: MONOID m) ('M :: MONOID m) Source Github # | |||||
| type ('M :: MONOID m) ** ('M :: MONOID m) Source Github # | |||||
data Mon (a :: MONOID m) (b :: MONOID m1) where Source Github #
Constructors
| Mon :: forall {k} {k1} {m1 :: k1} (m :: k). ((Unit :: k) ~> m) -> Mon ('M :: MONOID m) ('M :: MONOID m1) |
Instances
| Monoid m => EnrichedProfunctor (Clone k) (Mon :: MONOID m -> MONOID m -> Type) Source Github # | A monoid is a one object enriched category. |
Defined in Proarrow.Category.Enriched Methods withProObj :: forall (a :: MONOID m) (b :: MONOID m) r. (Ob a, Ob b) => (Ob (ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) => r) -> r Source Github # underlying :: forall (a :: MONOID m) (b :: MONOID m). Mon a b -> (Unit :: Clone k) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b Source Github # enriched :: forall (a :: MONOID m) (b :: MONOID m). (Ob a, Ob b) => ((Unit :: Clone k) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) -> Mon a b Source Github # rmap :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => (HomObj (Clone k) b c ** ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a c Source Github # lmap :: forall (a :: MONOID m) (b :: MONOID m) (c :: MONOID m). (Ob a, Ob b, Ob c) => (HomObj (Clone k) c a ** ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) a b) ~> ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) c b Source Github # | |
| CommutativeMonoid m => MonoidalProfunctor (Mon :: MONOID m -> MONOID m -> Type) Source Github # | |
| Monoid m => Profunctor (Mon :: MONOID m -> MONOID m -> Type) Source Github # | |
Defined in Proarrow.Category.Instance.Monoid Methods dimap :: forall (c :: MONOID m) (a :: MONOID m) (b :: MONOID m) (d :: MONOID m). (c ~> a) -> (b ~> d) -> Mon a b -> Mon c d Source Github # lmap :: forall (c :: MONOID m) (a :: MONOID m) (b :: MONOID m). (c ~> a) -> Mon a b -> Mon c b Source Github # rmap :: forall (b :: MONOID m) (d :: MONOID m) (a :: MONOID m). (b ~> d) -> Mon a b -> Mon a d Source Github # (\\) :: forall (a :: MONOID m) (b :: MONOID m) r. ((Ob a, Ob b) => r) -> Mon a b -> r Source Github # | |
| Monoid m => Promonad (Mon :: MONOID m -> MONOID m -> Type) Source Github # | |
| type ProObj (Clone k) (Mon :: MONOID m -> MONOID m -> Type) ('M :: MONOID m) ('M :: MONOID m) Source Github # | |