| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Proarrow.Category.Monoidal
Description
Monoidal categories, as kinds with a tensor: Monoidal provides Unit, the tensor (,
and the unitor and associator isomorphisms; **)SymMonoidal adds the symmetry swap. A
MonoidalProfunctor is a lax monoidal profunctor with one and a value-level (, and a
category is **)Monoidal if and only if its hom-profunctor is.
Synopsis
- class (Monoidal j, Monoidal k, Profunctor p) => MonoidalProfunctor (p :: j +-> k) where
- type LaxMonoidal (p :: j +-> k) = (MonoidalProfunctor p, Representable p)
- par0Rep :: forall {j} {k} (p :: j +-> k). LaxMonoidal p => (Unit :: k) ~> (p % (Unit :: j))
- parRep :: forall {k1} {k2} (p :: k1 +-> k2) (x :: k1) (y :: k1). (LaxMonoidal p, Ob x, Ob y) => ((p % x) ** (p % y)) ~> (p % (x ** y))
- type OplaxMonoidal (p :: j +-> k) = (MonoidalProfunctor p, Corepresentable p)
- unpar0Corep :: forall {k1} {k2} (p :: k1 +-> k2). OplaxMonoidal p => (p %% (Unit :: k2)) ~> (Unit :: k1)
- unparCorep :: forall {j} {k} (p :: j +-> k) (x :: k) (y :: k). (OplaxMonoidal p, Ob x, Ob y) => (p %% (x ** y)) ~> ((p %% x) ** (p %% y))
- type OplaxMonoidalRep (p :: k +-> j) = (Representable p, OplaxMonoidal (RepCostar p))
- unpar0Rep :: forall {j} {k} (p :: j +-> k). OplaxMonoidalRep p => (p % (Unit :: j)) ~> (Unit :: k)
- unparRep :: forall {j} {k} (p :: j +-> k) (x :: j) (y :: j). (OplaxMonoidalRep p, Ob x, Ob y) => (p % (x ** y)) ~> ((p % x) ** (p % y))
- type LaxMonoidalCorep (p :: k +-> j) = (Corepresentable p, LaxMonoidal (CorepStar p))
- par0Corep :: forall {k1} {k2} (p :: k1 +-> k2). LaxMonoidalCorep p => (Unit :: k1) ~> (p %% (Unit :: k2))
- parCorep :: forall {j} {k} (p :: j +-> k) (x :: k) (y :: k). (LaxMonoidalCorep p, Ob x, Ob y) => ((p %% x) ** (p %% y)) ~> (p %% (x ** y))
- type StrongMonoidalRep (p :: k +-> j) = (LaxMonoidal p, OplaxMonoidalRep p)
- type StrongMonoidalCorep (p :: k +-> j) = (OplaxMonoidal p, LaxMonoidalCorep p)
- class (CategoryOf k, MonoidalProfunctor ((~>) :: CAT k), Ob (Unit :: k)) => Monoidal k where
- type Unit :: k
- type (a :: k) ** (b :: k) :: k
- withOb2 :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r
- leftUnitor :: forall (a :: k). Ob a => ((Unit :: k) ** a) ~> a
- leftUnitorInv :: forall (a :: k). Ob a => a ~> ((Unit :: k) ** a)
- rightUnitor :: forall (a :: k). Ob a => (a ** (Unit :: k)) ~> a
- rightUnitorInv :: forall (a :: k). Ob a => a ~> (a ** (Unit :: k))
- associator :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c))
- associatorInv :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c)
- leftUnitorIso :: forall k (a :: k) (a' :: k). (Monoidal k, Ob a, Ob a') => PIso ((Unit :: k) ** a) ((Unit :: k) ** a') a a'
- rightUnitorIso :: forall k (a :: k) (a' :: k). (Monoidal k, Ob a, Ob a') => PIso (a ** (Unit :: k)) (a' ** (Unit :: k)) a a'
- associatorIso :: forall k (a :: k) (b :: k) (c :: k) (a' :: k) (b' :: k) (c' :: k). (Monoidal k, Ob a, Ob b, Ob c, Ob a', Ob b', Ob c') => PIso ((a ** b) ** c) ((a' ** b') ** c') (a ** (b ** c)) (a' ** (b' ** c'))
- class ((a ** b) ** c) ~ (a ** (b ** c)) => StrictlyAssoc (a :: k) (b :: k) (c :: k)
- type family NFold (n :: Nat) (x :: k) :: k where ...
- type family NFoldS (n :: Nat) (x :: k) :: [k] where ...
- withObNFold :: forall {k} (n :: Nat) (a :: k) r. (SNatI n, Ob a, Monoidal k) => (Ob (NFold n a) => r) -> r
- class ((a ** (Unit :: k)) ~ a, ((Unit :: k) ** a) ~ a, forall (b :: k) (c :: k). StrictlyAssoc a b c) => Strictly (a :: k) where
- (==) :: forall k (a :: k) (b :: k) (c :: k). CategoryOf k => (a ~> b) -> (b ~> c) -> a ~> c
- obj2 :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a, Ob b) => Obj (a ** b)
- leftUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> ((Unit :: k) ** a) ~> b
- leftUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> ((Unit :: k) ** b)
- rightUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> (a ** (Unit :: k)) ~> b
- rightUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> (b ** (Unit :: k))
- associator' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c))
- associatorInv' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c)
- leftUnitorWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => (b ~> (Unit :: k)) -> (b ** a) ~> a
- leftUnitorInvWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => ((Unit :: k) ~> b) -> a ~> (b ** a)
- rightUnitorWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => (b ~> (Unit :: k)) -> (a ** b) ~> a
- rightUnitorInvWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => ((Unit :: k) ~> b) -> a ~> (a ** b)
- unitObj :: Monoidal k => Obj (Unit :: k)
- first :: forall {k} (c :: k) (a :: k) (b :: k). (Monoidal k, Ob c) => (a ~> b) -> (a ** c) ~> (b ** c)
- second :: forall {k} (c :: k) (a :: k) (b :: k). (Monoidal k, Ob c) => (a ~> b) -> (c ** a) ~> (c ** b)
- type State (a :: k) = (Unit :: k) ~> a
- type Costate (a :: k) = a ~> (Unit :: k)
- type Scalar k = (Unit :: k) ~> (Unit :: k)
- class Monoidal k => SymMonoidal k where
- swap' :: forall {k} (a :: k) (a' :: k) (b :: k) (b' :: k). SymMonoidal k => (a ~> a') -> (b ~> b') -> (a ** b) ~> (b' ** a')
- swapInner' :: forall k (a :: k) (a' :: k) (b :: k) (b' :: k) (c :: k) (c' :: k) (d :: k) (d' :: k). SymMonoidal k => (a ~> a') -> (b ~> b') -> (c ~> c') -> (d ~> d') -> ((a ** b) ** (c ** d)) ~> ((a' ** c') ** (b' ** d'))
- swapInner :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((a ** c) ** (b ** d))
- swapFst :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((c ** b) ** (a ** d))
- swapSnd :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((a ** d) ** (c ** b))
- swapOuter :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((d ** b) ** (c ** a))
- data UnitRep (a :: k) (b :: ())
- data MultRep (a :: k) (b :: (k, k))
- type Tensor = Rep (MultRep :: k -> (k, k) -> Type)
- data family UnitF :: k
- data family (a :: k) **! (b :: k) :: k
- type SymMonoidalStructures = '[Monoidal, SymMonoidal]
Documentation
class (Monoidal j, Monoidal k, Profunctor p) => MonoidalProfunctor (p :: j +-> k) where Source Github #
Methods
one :: p (Unit :: k) (Unit :: j) Source Github #
(**) :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). p x1 x2 -> p y1 y2 -> p (x1 ** y1) (x2 ** y2) infixl 8 Source Github #
Instances
type LaxMonoidal (p :: j +-> k) = (MonoidalProfunctor p, Representable p) Source Github #
A representable profunctor that is a MonoidalProfunctor: its functor p is lax
monoidal, splitting as %par0Rep and parRep.
par0Rep :: forall {j} {k} (p :: j +-> k). LaxMonoidal p => (Unit :: k) ~> (p % (Unit :: j)) Source Github #
parRep :: forall {k1} {k2} (p :: k1 +-> k2) (x :: k1) (y :: k1). (LaxMonoidal p, Ob x, Ob y) => ((p % x) ** (p % y)) ~> (p % (x ** y)) Source Github #
type OplaxMonoidal (p :: j +-> k) = (MonoidalProfunctor p, Corepresentable p) Source Github #
A corepresentable profunctor that is a MonoidalProfunctor: its functor p is oplax
monoidal, splitting as %%unpar0Corep and unparCorep.
unpar0Corep :: forall {k1} {k2} (p :: k1 +-> k2). OplaxMonoidal p => (p %% (Unit :: k2)) ~> (Unit :: k1) Source Github #
unparCorep :: forall {j} {k} (p :: j +-> k) (x :: k) (y :: k). (OplaxMonoidal p, Ob x, Ob y) => (p %% (x ** y)) ~> ((p %% x) ** (p %% y)) Source Github #
type OplaxMonoidalRep (p :: k +-> j) = (Representable p, OplaxMonoidal (RepCostar p)) Source Github #
A representable profunctor whose functor p is oplax monoidal. Stating the oplax
structure of a representable functor means naming that same functor in its other variance, as
%RepCostar does. So the postfix here says which presentation p is in, not which structure it
carries. Weaker than StrongMonoidalRep, which additionally asks p itself to be
LaxMonoidal.
unpar0Rep :: forall {j} {k} (p :: j +-> k). OplaxMonoidalRep p => (p % (Unit :: j)) ~> (Unit :: k) Source Github #
unparRep :: forall {j} {k} (p :: j +-> k) (x :: j) (y :: j). (OplaxMonoidalRep p, Ob x, Ob y) => (p % (x ** y)) ~> ((p % x) ** (p % y)) Source Github #
type LaxMonoidalCorep (p :: k +-> j) = (Corepresentable p, LaxMonoidal (CorepStar p)) Source Github #
A corepresentable profunctor whose functor p is lax monoidal, dually through
%%CorepStar.
par0Corep :: forall {k1} {k2} (p :: k1 +-> k2). LaxMonoidalCorep p => (Unit :: k1) ~> (p %% (Unit :: k2)) Source Github #
parCorep :: forall {j} {k} (p :: j +-> k) (x :: k) (y :: k). (LaxMonoidalCorep p, Ob x, Ob y) => ((p %% x) ** (p %% y)) ~> (p %% (x ** y)) Source Github #
type StrongMonoidalRep (p :: k +-> j) = (LaxMonoidal p, OplaxMonoidalRep p) Source Github #
A representable profunctor whose functor is strong monoidal: lax as it stands, and oplax in its other variance.
type StrongMonoidalCorep (p :: k +-> j) = (OplaxMonoidal p, LaxMonoidalCorep p) Source Github #
A corepresentable profunctor whose functor is strong monoidal, dually.
class (CategoryOf k, MonoidalProfunctor ((~>) :: CAT k), Ob (Unit :: k)) => Monoidal k where Source Github #
A monoidal category: a tensor with a **Unit, associative and unital up to the coherent
isomorphisms below. The tensor's action on arrows is the MonoidalProfunctor method ** at
(, which the superclass supplies.~>)
Laws:
The three isomorphisms must be mutually inverse:
andleftUnitor.leftUnitorInv=idleftUnitorInv.leftUnitor=idandrightUnitor.rightUnitorInv=idrightUnitorInv.rightUnitor=idandassociator.associatorInv=idassociatorInv.associator=id
and natural in every argument:
leftUnitor. (id**f) = f .leftUnitorrightUnitor. (f**id) = f .rightUnitorassociator. ((f**g)**h) = (f**(g**h)) .associator
subject to the two coherence conditions:
- Triangle:
(id**leftUnitor) .associator=rightUnitor**id - Pentagon:
(id**associator) .associator. (associator**id) =associator.associator
Checked by testMonoidal.
Minimal complete definition
Associated Types
type Unit :: k Source Github #
The tensor unit.
type (a :: k) ** (b :: k) :: k infixl 8 Source Github #
The tensor product of two objects.
Methods
withOb2 :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github #
leftUnitor :: forall (a :: k). Ob a => ((Unit :: k) ** a) ~> a Source Github #
Cancels a Unit on the left.
default leftUnitor :: forall (a :: k). (Ob a, ((Unit :: k) ** a) ~ a) => ((Unit :: k) ** a) ~> a Source Github #
leftUnitorInv :: forall (a :: k). Ob a => a ~> ((Unit :: k) ** a) Source Github #
Introduces a Unit on the left; inverse to leftUnitor.
default leftUnitorInv :: forall (a :: k). (Ob a, ((Unit :: k) ** a) ~ a) => a ~> ((Unit :: k) ** a) Source Github #
rightUnitor :: forall (a :: k). Ob a => (a ** (Unit :: k)) ~> a Source Github #
Cancels a Unit on the right.
default rightUnitor :: forall (a :: k). (Ob a, (a ** (Unit :: k)) ~ a) => (a ** (Unit :: k)) ~> a Source Github #
rightUnitorInv :: forall (a :: k). Ob a => a ~> (a ** (Unit :: k)) Source Github #
Introduces a Unit on the right; inverse to rightUnitor.
default rightUnitorInv :: forall (a :: k). (Ob a, (a ** (Unit :: k)) ~ a) => a ~> (a ** (Unit :: k)) Source Github #
associator :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github #
Reassociates the tensor to the right.
associatorInv :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github #
Reassociates the tensor to the left; inverse to associator.
Instances
| Monoidal Nat Source Github # | Addition as monoidal tensor. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Simplex Associated Types
Methods withOb2 :: forall (a :: Nat) (b :: Nat) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: Nat). Ob a => ((Unit :: Nat) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: Nat). Ob a => a ~> ((Unit :: Nat) ** a) Source Github # rightUnitor :: forall (a :: Nat). Ob a => (a ** (Unit :: Nat)) ~> a Source Github # rightUnitorInv :: forall (a :: Nat). Ob a => a ~> (a ** (Unit :: Nat)) Source Github # associator :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal Nat Source Github # | Addition of the number of qubits as monoidal tensor. This is the Kronecker product of the matrices. | ||||||||||||||||
Defined in Proarrow.Category.Instance.ZX Associated Types
Methods withOb2 :: forall (a :: Nat) (b :: Nat) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: Nat). Ob a => ((Unit :: Nat) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: Nat). Ob a => a ~> ((Unit :: Nat) ** a) Source Github # rightUnitor :: forall (a :: Nat). Ob a => (a ** (Unit :: Nat)) ~> a Source Github # rightUnitorInv :: forall (a :: Nat). Ob a => a ~> (a ** (Unit :: Nat)) Source Github # associator :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal BOOL Source Github # | Products as monoidal structure. | ||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct Associated Types
Methods withOb2 :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: BOOL). Ob a => ((Unit :: BOOL) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: BOOL). Ob a => a ~> ((Unit :: BOOL) ** a) Source Github # rightUnitor :: forall (a :: BOOL). Ob a => (a ** (Unit :: BOOL)) ~> a Source Github # rightUnitorInv :: forall (a :: BOOL). Ob a => a ~> (a ** (Unit :: BOOL)) Source Github # associator :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal CONSTRAINT Source Github # | Products as monoidal structure. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Constraint Associated Types
Methods withOb2 :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: CONSTRAINT). Ob a => ((Unit :: CONSTRAINT) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: CONSTRAINT). Ob a => a ~> ((Unit :: CONSTRAINT) ** a) Source Github # rightUnitor :: forall (a :: CONSTRAINT). Ob a => (a ** (Unit :: CONSTRAINT)) ~> a Source Github # rightUnitorInv :: forall (a :: CONSTRAINT). Ob a => a ~> (a ** (Unit :: CONSTRAINT)) Source Github # associator :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal COST Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Cost Associated Types
Methods withOb2 :: forall (a :: COST) (b :: COST) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: COST). Ob a => ((Unit :: COST) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: COST). Ob a => a ~> ((Unit :: COST) ** a) Source Github # rightUnitor :: forall (a :: COST). Ob a => (a ** (Unit :: COST)) ~> a Source Github # rightUnitorInv :: forall (a :: COST). Ob a => a ~> (a ** (Unit :: COST)) Source Github # associator :: forall (a :: COST) (b :: COST) (c :: COST). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: COST) (b :: COST) (c :: COST). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal FINHASK Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.FinHask Associated Types
Methods withOb2 :: forall (a :: FINHASK) (b :: FINHASK) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: FINHASK). Ob a => ((Unit :: FINHASK) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: FINHASK). Ob a => a ~> ((Unit :: FINHASK) ** a) Source Github # rightUnitor :: forall (a :: FINHASK). Ob a => (a ** (Unit :: FINHASK)) ~> a Source Github # rightUnitorInv :: forall (a :: FINHASK). Ob a => a ~> (a ** (Unit :: FINHASK)) Source Github # associator :: forall (a :: FINHASK) (b :: FINHASK) (c :: FINHASK). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: FINHASK) (b :: FINHASK) (c :: FINHASK). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal FINREL Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.FinRel Associated Types
Methods withOb2 :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: FINREL). Ob a => ((Unit :: FINREL) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: FINREL). Ob a => a ~> ((Unit :: FINREL) ** a) Source Github # rightUnitor :: forall (a :: FINREL). Ob a => (a ** (Unit :: FINREL)) ~> a Source Github # rightUnitorInv :: forall (a :: FINREL). Ob a => a ~> (a ** (Unit :: FINREL)) Source Github # associator :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal FINSET Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.FinSet Associated Types
Methods withOb2 :: forall (a :: FINSET) (b :: FINSET) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: FINSET). Ob a => ((Unit :: FINSET) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: FINSET). Ob a => a ~> ((Unit :: FINSET) ** a) Source Github # rightUnitor :: forall (a :: FINSET). Ob a => (a ** (Unit :: FINSET)) ~> a Source Github # rightUnitorInv :: forall (a :: FINSET). Ob a => a ~> (a ** (Unit :: FINSET)) Source Github # associator :: forall (a :: FINSET) (b :: FINSET) (c :: FINSET). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: FINSET) (b :: FINSET) (c :: FINSET). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal LINEAR Source Github # | Tuples as monoidal tensor. Tuples are not the binary product in LINEAR. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Linear Associated Types
Methods withOb2 :: forall (a :: LINEAR) (b :: LINEAR) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: LINEAR). Ob a => ((Unit :: LINEAR) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: LINEAR). Ob a => a ~> ((Unit :: LINEAR) ** a) Source Github # rightUnitor :: forall (a :: LINEAR). Ob a => (a ** (Unit :: LINEAR)) ~> a Source Github # rightUnitorInv :: forall (a :: LINEAR). Ob a => a ~> (a ** (Unit :: LINEAR)) Source Github # associator :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal POINTED Source Github # | The smash product of pointed sets. Monoids relative to the smash product are absorption monoids. | ||||||||||||||||
Defined in Proarrow.Category.Instance.PointedHask Associated Types
Methods withOb2 :: forall (a :: POINTED) (b :: POINTED) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: POINTED). Ob a => ((Unit :: POINTED) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: POINTED). Ob a => a ~> ((Unit :: POINTED) ** a) Source Github # rightUnitor :: forall (a :: POINTED). Ob a => (a ** (Unit :: POINTED)) ~> a Source Github # rightUnitorInv :: forall (a :: POINTED). Ob a => a ~> (a ** (Unit :: POINTED)) Source Github # associator :: forall (a :: POINTED) (b :: POINTED) (c :: POINTED). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: POINTED) (b :: POINTED) (c :: POINTED). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal DOT Source Github # | |||||||||||||||||
Defined in Proarrow.Tools.Diagrams.Dot Associated Types
Methods withOb2 :: forall (a :: DOT) (b :: DOT) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: DOT). Ob a => ((Unit :: DOT) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: DOT). Ob a => a ~> ((Unit :: DOT) ** a) Source Github # rightUnitor :: forall (a :: DOT). Ob a => (a ** (Unit :: DOT)) ~> a Source Github # rightUnitorInv :: forall (a :: DOT). Ob a => a ~> (a ** (Unit :: DOT)) Source Github # associator :: forall (a :: DOT) (b :: DOT) (c :: DOT). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: DOT) (b :: DOT) (c :: DOT). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal SVG Source Github # | The unit is the unit wire, and the unitors absorb or create it. | ||||||||||||||||
Defined in Proarrow.Tools.Diagrams.Svg Associated Types
Methods withOb2 :: forall (a :: SVG) (b :: SVG) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: SVG). Ob a => ((Unit :: SVG) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: SVG). Ob a => a ~> ((Unit :: SVG) ** a) Source Github # rightUnitor :: forall (a :: SVG). Ob a => (a ** (Unit :: SVG)) ~> a Source Github # rightUnitorInv :: forall (a :: SVG). Ob a => a ~> (a ** (Unit :: SVG)) Source Github # associator :: forall (a :: SVG) (b :: SVG) (c :: SVG). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: SVG) (b :: SVG) (c :: SVG). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal () Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal Associated Types
Methods withOb2 :: forall (a :: ()) (b :: ()) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: ()). Ob a => ((Unit :: ()) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: ()). Ob a => a ~> ((Unit :: ()) ** a) Source Github # rightUnitor :: forall (a :: ()). Ob a => (a ** (Unit :: ())) ~> a Source Github # rightUnitorInv :: forall (a :: ()). Ob a => a ~> (a ** (Unit :: ())) Source Github # associator :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal Type Source Github # | Products as monoidal structure. | ||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct Associated Types
Methods withOb2 :: (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: Ob a => ((Unit :: Type) ** a) ~> a Source Github # leftUnitorInv :: Ob a => a ~> ((Unit :: Type) ** a) Source Github # rightUnitor :: Ob a => (a ** (Unit :: Type)) ~> a Source Github # rightUnitorInv :: Ob a => a ~> (a ** (Unit :: Type)) Source Github # associator :: (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| (HasPushouts k, HasCoproducts k) => Monoidal (COSPAN k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Cospan Associated Types
Methods withOb2 :: forall (a :: COSPAN k) (b :: COSPAN k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: COSPAN k). Ob a => ((Unit :: COSPAN k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: COSPAN k). Ob a => a ~> ((Unit :: COSPAN k) ** a) Source Github # rightUnitor :: forall (a :: COSPAN k). Ob a => (a ** (Unit :: COSPAN k)) ~> a Source Github # rightUnitorInv :: forall (a :: COSPAN k). Ob a => a ~> (a ** (Unit :: COSPAN k)) Source Github # associator :: forall (a :: COSPAN k) (b :: COSPAN k) (c :: COSPAN k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: COSPAN k) (b :: COSPAN k) (c :: COSPAN k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| TracedMonoidal k => Monoidal (INT k) Source Github # | The monoidal tensor is pointwise, tensoring of the plus and minus parts. | ||||||||||||||||
Defined in Proarrow.Category.Instance.IntConstruction Associated Types
Methods withOb2 :: forall (a :: INT k) (b :: INT k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: INT k). Ob a => ((Unit :: INT k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: INT k). Ob a => a ~> ((Unit :: INT k) ** a) Source Github # rightUnitor :: forall (a :: INT k). Ob a => (a ** (Unit :: INT k)) ~> a Source Github # rightUnitorInv :: forall (a :: INT k). Ob a => a ~> (a ** (Unit :: INT k)) Source Github # associator :: forall (a :: INT k) (b :: INT k) (c :: INT k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: INT k) (b :: INT k) (c :: INT k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Num a => Monoidal (MatK a) Source Github # | Products of the dimensions of the matrices as the tensor. This is the Kronecker product of matrices. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Mat Associated Types
Methods withOb2 :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 ** b) => r) -> r Source Github # leftUnitor :: forall (a0 :: MatK a). Ob a0 => ((Unit :: MatK a) ** a0) ~> a0 Source Github # leftUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> ((Unit :: MatK a) ** a0) Source Github # rightUnitor :: forall (a0 :: MatK a). Ob a0 => (a0 ** (Unit :: MatK a)) ~> a0 Source Github # rightUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> (a0 ** (Unit :: MatK a)) Source Github # associator :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 ** b) ** c) ~> (a0 ** (b ** c)) Source Github # associatorInv :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ** (b ** c)) ~> ((a0 ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal k => Monoidal (OPPOSITE k) Source Github # | The opposite of a monoidal category is also monoidal, with the same tensor product. | ||||||||||||||||
Defined in Proarrow.Category.Monoidal Associated Types
Methods withOb2 :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: OPPOSITE k). Ob a => ((Unit :: OPPOSITE k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: OPPOSITE k). Ob a => a ~> ((Unit :: OPPOSITE k) ** a) Source Github # rightUnitor :: forall (a :: OPPOSITE k). Ob a => (a ** (Unit :: OPPOSITE k)) ~> a Source Github # rightUnitorInv :: forall (a :: OPPOSITE k). Ob a => a ~> (a ** (Unit :: OPPOSITE k)) Source Github # associator :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| MonoidalOrdinal n => Monoidal (ORDINAL n) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Ordinal Associated Types
Methods withOb2 :: forall (a :: ORDINAL n) (b :: ORDINAL n) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: ORDINAL n). Ob a => ((Unit :: ORDINAL n) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: ORDINAL n). Ob a => a ~> ((Unit :: ORDINAL n) ** a) Source Github # rightUnitor :: forall (a :: ORDINAL n). Ob a => (a ** (Unit :: ORDINAL n)) ~> a Source Github # rightUnitorInv :: forall (a :: ORDINAL n). Ob a => a ~> (a ** (Unit :: ORDINAL n)) Source Github # associator :: forall (a :: ORDINAL n) (b :: ORDINAL n) (c :: ORDINAL n). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: ORDINAL n) (b :: ORDINAL n) (c :: ORDINAL n). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| (HasPullbacks k, HasProducts k) => Monoidal (SPAN k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Span Associated Types
Methods withOb2 :: forall (a :: SPAN k) (b :: SPAN k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: SPAN k). Ob a => ((Unit :: SPAN k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: SPAN k). Ob a => a ~> ((Unit :: SPAN k) ** a) Source Github # rightUnitor :: forall (a :: SPAN k). Ob a => (a ** (Unit :: SPAN k)) ~> a Source Github # rightUnitorInv :: forall (a :: SPAN k). Ob a => a ~> (a ** (Unit :: SPAN k)) Source Github # associator :: forall (a :: SPAN k) (b :: SPAN k) (c :: SPAN k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: SPAN k) (b :: SPAN k) (c :: SPAN k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| CategoryOf k => Monoidal (ENDO k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal.EndoProf Associated Types
Methods withOb2 :: forall (a :: ENDO k) (b :: ENDO k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: ENDO k). Ob a => ((Unit :: ENDO k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: ENDO k). Ob a => a ~> ((Unit :: ENDO k) ** a) Source Github # rightUnitor :: forall (a :: ENDO k). Ob a => (a ** (Unit :: ENDO k)) ~> a Source Github # rightUnitorInv :: forall (a :: ENDO k). Ob a => a ~> (a ** (Unit :: ENDO k)) Source Github # associator :: forall (a :: ENDO k) (b :: ENDO k) (c :: ENDO k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: ENDO k) (b :: ENDO k) (c :: ENDO k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal k => Monoidal (REV k) Source Github # | The flipped tensor. | ||||||||||||||||
Defined in Proarrow.Category.Monoidal.Rev Associated Types
Methods withOb2 :: forall (a :: REV k) (b :: REV k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: REV k). Ob a => ((Unit :: REV k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: REV k). Ob a => a ~> ((Unit :: REV k) ** a) Source Github # rightUnitor :: forall (a :: REV k). Ob a => (a ** (Unit :: REV k)) ~> a Source Github # rightUnitorInv :: forall (a :: REV k). Ob a => a ~> (a ** (Unit :: REV k)) Source Github # associator :: forall (a :: REV k) (b :: REV k) (c :: REV k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: REV k) (b :: REV k) (c :: REV k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| HasCoproducts k => Monoidal (COPROD k) Source Github # | Coproducts as monoidal tensor. | ||||||||||||||||
Defined in Proarrow.Colimit.BinaryCoproduct Associated Types
Methods withOb2 :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: COPROD k). Ob a => ((Unit :: COPROD k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: COPROD k). Ob a => a ~> ((Unit :: COPROD k) ** a) Source Github # rightUnitor :: forall (a :: COPROD k). Ob a => (a ** (Unit :: COPROD k)) ~> a Source Github # rightUnitorInv :: forall (a :: COPROD k). Ob a => a ~> (a ** (Unit :: COPROD k)) Source Github # associator :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| HasProducts k => Monoidal (PROD k) Source Github # | Products as monoidal structure. | ||||||||||||||||
Defined in Proarrow.Limit.BinaryProduct Associated Types
Methods withOb2 :: forall (a :: PROD k) (b :: PROD k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: PROD k). Ob a => ((Unit :: PROD k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: PROD k). Ob a => a ~> ((Unit :: PROD k) ** a) Source Github # rightUnitor :: forall (a :: PROD k). Ob a => (a ** (Unit :: PROD k)) ~> a Source Github # rightUnitorInv :: forall (a :: PROD k). Ob a => a ~> (a ** (Unit :: PROD k)) Source Github # associator :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| CategoryOf k => Monoidal (LIST k) Source Github # | The free monoidal category on a category. | ||||||||||||||||
Defined in Proarrow.Profunctor.Instance.List Associated Types
Methods withOb2 :: forall (a :: LIST k) (b :: LIST k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: LIST k). Ob a => ((Unit :: LIST k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: LIST k). Ob a => a ~> ((Unit :: LIST k) ** a) Source Github # rightUnitor :: forall (a :: LIST k). Ob a => (a ** (Unit :: LIST k)) ~> a Source Github # rightUnitorInv :: forall (a :: LIST k). Ob a => a ~> (a ** (Unit :: LIST k)) Source Github # associator :: forall (a :: LIST k) (b :: LIST k) (c :: LIST k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: LIST k) (b :: LIST k) (c :: LIST k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal k => Monoidal [k] Source Github # | List concatenation as monoidal tensor. | ||||||||||||||||
Defined in Proarrow.Category.Monoidal.Strictified Associated Types
Methods withOb2 :: forall (a :: [k]) (b :: [k]) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: [k]). Ob a => ((Unit :: [k]) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: [k]). Ob a => a ~> ((Unit :: [k]) ** a) Source Github # rightUnitor :: forall (a :: [k]). Ob a => (a ** (Unit :: [k])) ~> a Source Github # rightUnitorInv :: forall (a :: [k]). Ob a => a ~> (a ** (Unit :: [k])) Source Github # associator :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| (Promonad p, MonoidalProfunctor p) => Monoidal (KLEISLI p) Source Github # | If the promonad is a monoidal profunctor, then its Kleisli category is a monoidal category. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Kleisli Associated Types
Methods withOb2 :: forall (a :: KLEISLI p) (b :: KLEISLI p) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: KLEISLI p). Ob a => ((Unit :: KLEISLI p) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: KLEISLI p). Ob a => a ~> ((Unit :: KLEISLI p) ** a) Source Github # rightUnitor :: forall (a :: KLEISLI p). Ob a => (a ** (Unit :: KLEISLI p)) ~> a Source Github # rightUnitorInv :: forall (a :: KLEISLI p). Ob a => a ~> (a ** (Unit :: KLEISLI p)) Source Github # associator :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| 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 # | |||||||||||||||||
| SubMonoidal ob => Monoidal (SUBCAT ob) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Sub Associated Types
Methods withOb2 :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: SUBCAT ob). Ob a => ((Unit :: SUBCAT ob) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: SUBCAT ob). Ob a => a ~> ((Unit :: SUBCAT ob) ** a) Source Github # rightUnitor :: forall (a :: SUBCAT ob). Ob a => (a ** (Unit :: SUBCAT ob)) ~> a Source Github # rightUnitorInv :: forall (a :: SUBCAT ob). Ob a => a ~> (a ** (Unit :: SUBCAT ob)) Source Github # associator :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) (c :: SUBCAT ob). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) (c :: SUBCAT ob). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| (Monoidal j, Monoidal k) => Monoidal (j +-> k) Source Github # | |||||||||||||||||
Defined in Proarrow.Profunctor.Instance.Day Associated Types
Methods withOb2 :: forall (a :: j +-> k) (b :: j +-> k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: j +-> k). Ob a => ((Unit :: j +-> k) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: j +-> k). Ob a => a ~> ((Unit :: j +-> k) ** a) Source Github # rightUnitor :: forall (a :: j +-> k). Ob a => (a ** (Unit :: j +-> k)) ~> a Source Github # rightUnitorInv :: forall (a :: j +-> k). Ob a => a ~> (a ** (Unit :: j +-> k)) Source Github # associator :: forall (a :: j +-> k) (b :: j +-> k) (c :: j +-> k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: j +-> k) (b :: j +-> k) (c :: j +-> k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| (Monoidal j, Monoidal k) => Monoidal (j, k) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal Associated Types
Methods withOb2 :: forall (a :: (j, k)) (b :: (j, k)) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: (j, k)). Ob a => ((Unit :: (j, k)) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: (j, k)). Ob a => a ~> ((Unit :: (j, k)) ** a) Source Github # rightUnitor :: forall (a :: (j, k)). Ob a => (a ** (Unit :: (j, k))) ~> a Source Github # rightUnitorInv :: forall (a :: (j, k)). Ob a => a ~> (a ** (Unit :: (j, k))) Source Github # associator :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Monoidal (Type -> Type) Source Github # | Composition as monoidal tensor. | ||||||||||||||||
Defined in Proarrow.Category.Instance.Nat Associated Types
Methods withOb2 :: forall (a :: Type -> Type) (b :: Type -> Type) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: Type -> Type). Ob a => ((Unit :: Type -> Type) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: Type -> Type). Ob a => a ~> ((Unit :: Type -> Type) ** a) Source Github # rightUnitor :: forall (a :: Type -> Type). Ob a => (a ** (Unit :: Type -> Type)) ~> a Source Github # rightUnitorInv :: forall (a :: Type -> Type). Ob a => a ~> (a ** (Unit :: Type -> Type)) Source Github # associator :: forall (a :: Type -> Type) (b :: Type -> Type) (c :: Type -> Type). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: Type -> Type) (b :: Type -> Type) (c :: Type -> Type). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| (Adjunction adj, StrongMonoidalCorep adj) => Monoidal (DUPLOID adj) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Instance.Duploid Associated Types
Methods withOb2 :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: DUPLOID adj). Ob a => ((Unit :: DUPLOID adj) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: DUPLOID adj). Ob a => a ~> ((Unit :: DUPLOID adj) ** a) Source Github # rightUnitor :: forall (a :: DUPLOID adj). Ob a => (a ** (Unit :: DUPLOID adj)) ~> a Source Github # rightUnitorInv :: forall (a :: DUPLOID adj). Ob a => a ~> (a ** (Unit :: DUPLOID adj)) Source Github # associator :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) (c :: DUPLOID adj). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: DUPLOID adj) (b :: DUPLOID adj) (c :: DUPLOID adj). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
| Elem Monoidal cs => Monoidal (FREE cs p) Source Github # | |||||||||||||||||
Defined in Proarrow.Category.Monoidal Associated Types
Methods withOb2 :: forall (a :: FREE cs p) (b :: FREE cs p) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github # leftUnitor :: forall (a :: FREE cs p). Ob a => ((Unit :: FREE cs p) ** a) ~> a Source Github # leftUnitorInv :: forall (a :: FREE cs p). Ob a => a ~> ((Unit :: FREE cs p) ** a) Source Github # rightUnitor :: forall (a :: FREE cs p). Ob a => (a ** (Unit :: FREE cs p)) ~> a Source Github # rightUnitorInv :: forall (a :: FREE cs p). Ob a => a ~> (a ** (Unit :: FREE cs p)) Source Github # associator :: forall (a :: FREE cs p) (b :: FREE cs p) (c :: FREE cs p). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github # associatorInv :: forall (a :: FREE cs p) (b :: FREE cs p) (c :: FREE cs p). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github # | |||||||||||||||||
leftUnitorIso :: forall k (a :: k) (a' :: k). (Monoidal k, Ob a, Ob a') => PIso ((Unit :: k) ** a) ((Unit :: k) ** a') a a' Source Github #
rightUnitorIso :: forall k (a :: k) (a' :: k). (Monoidal k, Ob a, Ob a') => PIso (a ** (Unit :: k)) (a' ** (Unit :: k)) a a' Source Github #
associatorIso :: forall k (a :: k) (b :: k) (c :: k) (a' :: k) (b' :: k) (c' :: k). (Monoidal k, Ob a, Ob b, Ob c, Ob a', Ob b', Ob c') => PIso ((a ** b) ** c) ((a' ** b') ** c') (a ** (b ** c)) (a' ** (b' ** c')) Source Github #
class ((a ** b) ** c) ~ (a ** (b ** c)) => StrictlyAssoc (a :: k) (b :: k) (c :: k) Source Github #
Instances
| ((a ** b) ** c) ~ (a ** (b ** c)) => StrictlyAssoc (a :: k) (b :: k) (c :: k) Source Github # | |
Defined in Proarrow.Category.Monoidal | |
type family NFoldS (n :: Nat) (x :: k) :: [k] where ... Source Github #
The Strictified counterpart of NFold: n copies
of x as a list, rather than nested tensors.
withObNFold :: forall {k} (n :: Nat) (a :: k) r. (SNatI n, Ob a, Monoidal k) => (Ob (NFold n a) => r) -> r Source Github #
is an object whenever NFold n aa is.
class ((a ** (Unit :: k)) ~ a, ((Unit :: k) ** a) ~ a, forall (b :: k) (c :: k). StrictlyAssoc a b c) => Strictly (a :: k) where Source Github #
If your monoidal category is a strict monoidal category, add Strictly to your Ob constraint.
This will let GHC know that the unitors and associators are strict, so you won't have to provide proof of that.
The four unitors then default to id. The defaults need only and
Unit ** a ~ aa , so they also fire for a strictly unital category such as
** Unit ~ aMatK or ZX. Both associators
can use associatorDefault:
associator @a @b @c = associatorDefault @a @b @c associatorInv @a @b @c = associatorDefault @a @b @c
Methods
associatorDefault :: forall (b :: k) (c :: k). (Monoidal k, Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github #
(==) :: forall k (a :: k) (b :: k) (c :: k). CategoryOf k => (a ~> b) -> (b ~> c) -> a ~> c infixl 7 Source Github #
leftUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> ((Unit :: k) ** a) ~> b Source Github #
leftUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> ((Unit :: k) ** b) Source Github #
rightUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> (a ** (Unit :: k)) ~> b Source Github #
rightUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> (b ** (Unit :: k)) Source Github #
associator' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Github #
associatorInv' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Github #
leftUnitorWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => (b ~> (Unit :: k)) -> (b ** a) ~> a Source Github #
leftUnitorInvWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => ((Unit :: k) ~> b) -> a ~> (b ** a) Source Github #
rightUnitorWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => (b ~> (Unit :: k)) -> (a ** b) ~> a Source Github #
rightUnitorInvWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => ((Unit :: k) ~> b) -> a ~> (a ** b) Source Github #
first :: forall {k} (c :: k) (a :: k) (b :: k). (Monoidal k, Ob c) => (a ~> b) -> (a ** c) ~> (b ** c) Source Github #
second :: forall {k} (c :: k) (a :: k) (b :: k). (Monoidal k, Ob c) => (a ~> b) -> (c ** a) ~> (c ** b) Source Github #
class Monoidal k => SymMonoidal k where Source Github #
Instances
swap' :: forall {k} (a :: k) (a' :: k) (b :: k) (b' :: k). SymMonoidal k => (a ~> a') -> (b ~> b') -> (a ** b) ~> (b' ** a') Source Github #
swapInner' :: forall k (a :: k) (a' :: k) (b :: k) (b' :: k) (c :: k) (c' :: k) (d :: k) (d' :: k). SymMonoidal k => (a ~> a') -> (b ~> b') -> (c ~> c') -> (d ~> d') -> ((a ** b) ** (c ** d)) ~> ((a' ** c') ** (b' ** d')) Source Github #
swapInner :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((a ** c) ** (b ** d)) Source Github #
swapFst :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((c ** b) ** (a ** d)) Source Github #
swapSnd :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((a ** d) ** (c ** b)) Source Github #
swapOuter :: forall {k} (a :: k) (b :: k) (c :: k) (d :: k). (SymMonoidal k, Ob a, Ob b, Ob c, Ob d) => ((a ** b) ** (c ** d)) ~> ((d ** b) ** (c ** a)) Source Github #
data MultRep (a :: k) (b :: (k, k)) Source Github #
Instances
| Monoidal k => MonoidalAction (Tensor :: k -> (k, k) -> Type) Source Github # | |
Defined in Proarrow.Category.Monoidal.Action Methods unitor :: forall (x :: k). Ob x => Act (Tensor :: k -> (k, k) -> Type) (Unit :: k) x ~> x Source Github # unitorInv :: forall (x :: k). Ob x => x ~> Act (Tensor :: k -> (k, k) -> Type) (Unit :: k) x Source Github # multiplicator :: forall (a :: k) (b :: k) (x :: k). (Ob a, Ob b, Ob x) => Act (Tensor :: k -> (k, k) -> Type) (a ** b) x ~> Act (Tensor :: k -> (k, k) -> Type) a (Act (Tensor :: k -> (k, k) -> Type) b x) Source Github # multiplicatorInv :: forall (a :: k) (b :: k) (x :: k). (Ob a, Ob b, Ob x) => Act (Tensor :: k -> (k, k) -> Type) a (Act (Tensor :: k -> (k, k) -> Type) b x) ~> Act (Tensor :: k -> (k, k) -> Type) (a ** b) x Source Github # | |
| Costrong (Tensor :: DOT -> (DOT, DOT) -> Type) Dot Source Github # | |
| Costrong (Tensor :: SVG -> (SVG, SVG) -> Type) Svg Source Github # | The traced wires loop round the side of the diagram they are nearest to. |
| MonadFix m => Costrong (Tensor :: Type -> (Type, Type) -> Type) (Kleisli m :: Type -> Type -> Type) Source Github # | |
| ArrowLoop arr => Costrong (Tensor :: Type -> (Type, Type) -> Type) (Arr arr :: Type -> Type -> Type) Source Github # | |
| Monad m => Strong (Tensor :: Type -> (Type, Type) -> Type) (Kleisli m :: Type -> Type -> Type) Source Github # | |
| Arrow arr => Strong (Tensor :: Type -> (Type, Type) -> Type) (Arr arr :: Type -> Type -> Type) Source Github # | |
| Costrong (Tensor :: Type -> (Type, Type) -> Type) (->) Source Github # | |
| Strong (Tensor :: Type -> (Type, Type) -> Type) (Cont r :: Type -> Type -> Type) Source Github # | |
| (CopyDiscard k, SNatI n) => Strong (Tensor :: k -> (k, k) -> Type) (Pow n :: k -> k -> Type) Source Github # | |
| (Ob r, SymMonoidal k) => Strong (Tensor :: k -> (k, k) -> Type) (Reader ('OP r) :: k -> k -> Type) Source Github # | |
| (Ob w, SymMonoidal k) => Strong (Tensor :: k -> (k, k) -> Type) (Writer w :: k -> k -> Type) Source Github # | |
| Functor f => Strong (Tensor :: Type -> (Type, Type) -> Type) (Star f :: Type -> Type -> Type) Source Github # | |
| (SymMonoidal k, Ob m) => Strong (Tensor :: k -> (k, k) -> Type) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
| (Closed k, SymMonoidal k, Ob m) => Strong (Tensor :: k -> (k, k) -> Type) (Rep (Exp m) :: k -> k -> Type) Source Github # | |
| (CopyDiscard k, Ob r) => Strong (Tensor :: k -> (k, k) -> Type) (Rep (Constant r) :: k -> k -> Type) Source Github # | The constant functor ignores the acting object: discard it. Only copying/discarding is needed, so this works in biproduct categories as well as cartesian ones. |
| (Strong (Tensor :: k -> (k, k) -> Type) p, Ob r, SymMonoidal k) => Strong (Tensor :: k -> (k, k) -> Type) (ReaderT ('OP r) p :: k -> k -> Type) Source Github # | |
| (Strong (Tensor :: k -> (k, k) -> Type) p, Ob s, SymMonoidal k) => Strong (Tensor :: k -> (k, k) -> Type) (StateT s p :: k -> k -> Type) Source Github # | |
| (Strong (Tensor :: k -> (k, k) -> Type) p, Ob w, SymMonoidal k) => Strong (Tensor :: k -> (k, k) -> Type) (WriterT w p :: k -> k -> Type) Source Github # | |
| (Monoidal k, Ob a, Ob b, Flavor w, forall (m :: k). Ob m => w (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m))) => Costrong (Tensor :: k -> (k, k) -> Type) (ExOptic w a b :: k -> k -> Type) Source Github # | The generic carrier absorbs the residual of a |
| (Monoidal k, Ob a, Ob b, Flavor w, forall (x :: k). Ob x => w (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) x)) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) x))) => Strong (Tensor :: k -> (k, k) -> Type) (ExOptic w a b :: k -> k -> Type) Source Github # | |
| (SymMonoidal k, Monoid m) => MonoidalProfunctor (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | Tensoring with a monoid, |
Defined in Proarrow.Monoid Methods one :: Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) (Unit :: k) (Unit :: k) Source Github # (**) :: forall (x1 :: k) (x2 :: k) (y1 :: k) (y2 :: k). Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) x1 x2 -> Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) y1 y2 -> Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) (x1 ** y1) (x2 ** y2) Source Github # | |
| ProLaws (Costrong (Tensor :: j -> (j, j) -> Type) :: (j +-> j) -> Constraint) Source Github # | The laws of costrength for the tensor acting on its own category: |
| ProLaws (Strong (Tensor :: j -> (j, j) -> Type) :: (j +-> j) -> Constraint) Source Github # | The laws of strength for the tensor acting on its own category: acting by the |
| (OplaxMonoidalRep m, Algebra m x, Comonoid x) => AlgLensFl (m :: k +-> k) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) x) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) x) :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Action | |
| (OplaxMonoidalRep l, Algebra l x, Monoid x, Comonoid x, SymMonoidal k, HasCoproducts k) => ClassifyFl (l :: k +-> k) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) x) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) x) :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Action | |
| Comonoid m => AffineFoldFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | The tensor-action witness pair |
Defined in Proarrow.Optic.MonoidalLens | |
| (FoldFl p1 q1, FoldFl p2 q2, Monoidal k) => FoldFl (Beside p1 p2 :: k -> k -> Type) (CoBeside q1 q2 :: k -> k -> Type) Source Github # | |
| Comonoid m => FoldFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | The tensor-action witness pair |
| Comonoid m => GetterFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
| Comonoid m => AffineTravFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | In a cartesian category the tensor is the product, so the comonoidal residual can be
projected out and put back: |
Defined in Proarrow.Optic.MonoidalLens Methods affineMatch :: forall (s :: k) (a :: k) (b :: k) (t :: k). Bicartesian k => Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) s a -> Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) b t -> s ~> (t || a) Source Github # affineSet :: forall (s :: k) (a :: k) (b :: k) (t :: k). Bicartesian k => Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) s a -> Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) b t -> (s && b) ~> t Source Github # | |
| Comonoid m => GlassFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
| (SymMonoidal k, HasCoproducts k, Monoid m) => CotravFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | The tensor-action pair for a monoid residual: |
| (SymMonoidal k, HasCoproducts k, Monoid m) => KaleidoFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
| Comonoid m => MonLensFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.MonoidalLens Methods withMonLensP :: forall (s :: k) (a :: k) (b :: k) (t :: k) r. SymMonoidal k => Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) s a -> Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) b t -> (forall (m0 :: k). Ob m0 => ComonoidOn m0 -> (s ~> (m0 ** a)) -> ((m0 ** b) ~> t) -> r) -> r Source Github # | |
| (SetterFl p1 q1, SetterFl p2 q2, Monoidal k) => SetterFl (Beside p1 p2 :: k -> k -> Type) (CoBeside q1 q2 :: k -> k -> Type) Source Github # | |
| (TracedMonoidal k, Ob m) => SetterFl (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | The tracer witness: the tensor-action pair read the other way round, |
| (Monoidal k, Ob a) => SetterFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) a) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) a) :: k -> k -> Type) Source Github # | The tensor-action witness pair |
| (TracedMonoidal k, Ob m) => TracerFl (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Tracer | |
| (MonTravFl p1 q1, MonTravFl p2 q2, Monoidal k) => MonTravFl (Beside p1 p2 :: k -> k -> Type) (CoBeside q1 q2 :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Traversal | |
| Comonoid m => MonTravFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
| (TravFl p1 q1, TravFl p2 q2, Monoidal k) => TravFl (Beside p1 p2 :: k -> k -> Type) (CoBeside q1 q2 :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Traversal | |
| Comonoid m => TravFl (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) (Corep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Optic.Traversal | |
| (Monoidal k, HasCoproducts k, Monoid m) => Strong (CoprodAction :: k -> (COPROD k, k) -> Type) (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m) :: k -> k -> Type) Source Github # | |
Defined in Proarrow.Monoid | |
| (Monoidal k, HasCoproducts k, Ob m) => MonoidalProfunctor (Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) :: COPROD k -> COPROD k -> Type) Source Github # | |
Defined in Proarrow.Monoid Methods one :: Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) (Unit :: COPROD k) (Unit :: COPROD k) Source Github # (**) :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) x1 x2 -> Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) y1 y2 -> Coprod (Rep (ActionAt (Tensor :: k -> (k, k) -> Type) m)) (x1 ** y1) (x2 ** y2) Source Github # | |
| Monoidal k => FunctorForRep (MultRep :: k -> (k, k) -> Type) Source Github # | |
| type (MultRep :: k -> (k, k) -> Type) @ ('(a, b) :: (k, k)) Source Github # | |
Defined in Proarrow.Category.Monoidal | |
type SymMonoidalStructures = '[Monoidal, SymMonoidal] Source Github #
The structures the free category needs for SymMonoidal, and those its laws are stated for.