proarrow-0: Category theory with a central role for profunctors
Safe HaskellNone
LanguageHaskell2010

Proarrow.Category.Monoidal

Documentation

class (Monoidal j, Monoidal k, Profunctor p) => MonoidalProfunctor (p :: j +-> k) where Source Comments #

Methods

par0 :: p (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). p x1 x2 -> p y1 y2 -> p (x1 ** y1) (x2 ** y2) Source Comments #

Instances

Instances details
MonoidalProfunctor Booleans Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Methods

par0 :: Booleans (Unit :: BOOL) (Unit :: BOOL) Source Comments #

par :: forall (x1 :: BOOL) (x2 :: BOOL) (y1 :: BOOL) (y2 :: BOOL). Booleans x1 x2 -> Booleans y1 y2 -> Booleans (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Cat Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

par0 :: Cat (Unit :: KIND) (Unit :: KIND) Source Comments #

par :: forall (x1 :: KIND) (x2 :: KIND) (y1 :: KIND) (y2 :: KIND). Cat x1 x2 -> Cat y1 y2 -> Cat (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (:-) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Methods

par0 :: (Unit :: CONSTRAINT) :- (Unit :: CONSTRAINT) Source Comments #

par :: forall (x1 :: CONSTRAINT) (x2 :: CONSTRAINT) (y1 :: CONSTRAINT) (y2 :: CONSTRAINT). (x1 :- x2) -> (y1 :- y2) -> (x1 ** y1) :- (x2 ** y2) Source Comments #

MonoidalProfunctor Linear Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: Linear (Unit :: LINEAR) (Unit :: LINEAR) Source Comments #

par :: forall (x1 :: LINEAR) (x2 :: LINEAR) (y1 :: LINEAR) (y2 :: LINEAR). Linear x1 x2 -> Linear y1 y2 -> Linear (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Forget Source Comments #

Forget is a lax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: Forget (Unit :: Type) (Unit :: LINEAR) Source Comments #

par :: forall x1 (x2 :: LINEAR) y1 (y2 :: LINEAR). Forget x1 x2 -> Forget y1 y2 -> Forget (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Pointed Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

Methods

par0 :: Pointed (Unit :: POINTED) (Unit :: POINTED) Source Comments #

par :: forall (x1 :: POINTED) (x2 :: POINTED) (y1 :: POINTED) (y2 :: POINTED). Pointed x1 x2 -> Pointed y1 y2 -> Pointed (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Simplex Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Simplex

Methods

par0 :: Simplex (Unit :: Nat) (Unit :: Nat) Source Comments #

par :: forall (x1 :: Nat) (x2 :: Nat) (y1 :: Nat) (y2 :: Nat). Simplex x1 x2 -> Simplex y1 y2 -> Simplex (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Unit Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

par0 :: Unit (Unit :: ()) (Unit :: ()) Source Comments #

par :: forall (x1 :: ()) (x2 :: ()) (y1 :: ()) (y2 :: ()). Unit x1 x2 -> Unit y1 y2 -> Unit (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor Free Source Comments #

Free is a lax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: Free (Unit :: LINEAR) (Unit :: Type) Source Comments #

par :: forall (x1 :: LINEAR) x2 (y1 :: LINEAR) y2. Free x1 x2 -> Free y1 y2 -> Free (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (Cont r :: Type -> Type -> Type) Source Comments #

Only premonoidal not monoidal?

Instance details

Defined in Proarrow.Promonad.Cont

Methods

par0 :: Cont r (Unit :: Type) (Unit :: Type) Source Comments #

par :: Cont r x1 x2 -> Cont r y1 y2 -> Cont r (x1 ** y1) (x2 ** y2) Source Comments #

SymMonoidal k => MonoidalProfunctor (Fold :: k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Fold

Methods

par0 :: Fold (Unit :: k) (Unit :: k) Source Comments #

par :: forall (x1 :: k) (x2 :: k) (y1 :: k) (y2 :: k). Fold x1 x2 -> Fold y1 y2 -> Fold (x1 ** y1) (x2 ** y2) Source Comments #

Monoidal k => MonoidalProfunctor (Id :: k -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Identity

Methods

par0 :: Id (Unit :: k) (Unit :: k) Source Comments #

par :: forall (x1 :: k) (x2 :: k) (y1 :: k) (y2 :: k). Id x1 x2 -> Id y1 y2 -> Id (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (->) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

par0 :: (Unit :: Type) -> (Unit :: Type) Source Comments #

par :: (x1 -> x2) -> (y1 -> y2) -> (x1 ** y1) -> (x2 ** y2) Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Fix p :: j -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Fix

Methods

par0 :: Fix p (Unit :: j) (Unit :: j) Source Comments #

par :: forall (x1 :: j) (x2 :: j) (y1 :: j) (y2 :: j). Fix p x1 x2 -> Fix p y1 y2 -> Fix p (x1 ** y1) (x2 ** y2) Source Comments #

(Monoidal j, Monoidal k) => MonoidalProfunctor (TerminalProfunctor :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Terminal

Methods

par0 :: TerminalProfunctor (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). TerminalProfunctor x1 x2 -> TerminalProfunctor y1 y2 -> TerminalProfunctor (x1 ** y1) (x2 ** y2) Source Comments #

(SymMonoidal k, Ob s) => MonoidalProfunctor (State s :: k -> k -> Type) Source Comments #

Note: This is only premonoidal, not monoidal.

Instance details

Defined in Proarrow.Promonad.State

Methods

par0 :: State s (Unit :: k) (Unit :: k) Source Comments #

par :: forall (x1 :: k) (x2 :: k) (y1 :: k) (y2 :: k). State s x1 x2 -> State s y1 y2 -> State s (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (RepCostar Free) Source Comments #

Free is also a colax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: RepCostar Free (Unit :: Type) (Unit :: LINEAR) Source Comments #

par :: forall x1 (x2 :: LINEAR) y1 (y2 :: LINEAR). RepCostar Free x1 x2 -> RepCostar Free y1 y2 -> RepCostar Free (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (RepCostar Forget) Source Comments #

Forget is also a colax monoidal functor

Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

par0 :: RepCostar Forget (Unit :: LINEAR) (Unit :: Type) Source Comments #

par :: forall (x1 :: LINEAR) x2 (y1 :: LINEAR) y2. RepCostar Forget x1 x2 -> RepCostar Forget y1 y2 -> RepCostar Forget (x1 ** y1) (x2 ** y2) Source Comments #

(Monoid c, Monoidal j, Monoidal k) => MonoidalProfunctor (Constant c :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Constant

Methods

par0 :: Constant c (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). Constant c x1 x2 -> Constant c y1 y2 -> Constant c (x1 ** y1) (x2 ** y2) Source Comments #

(MonoidalProfunctor r, Adjunction l r, Representable l, Representable r, Monoidal j, Monoidal k) => MonoidalProfunctor (RepCostar l :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Adjunction

Methods

par0 :: RepCostar l (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). RepCostar l x1 x2 -> RepCostar l y1 y2 -> RepCostar l (x1 ** y1) (x2 ** y2) Source Comments #

(Applicative f, Monoidal j, Monoidal k) => MonoidalProfunctor (Star f :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

par0 :: Star f (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). Star f x1 x2 -> Star f y1 y2 -> Star f (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Wrapped p :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Wrapped

Methods

par0 :: Wrapped p (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). Wrapped p x1 x2 -> Wrapped p y1 y2 -> Wrapped p (x1 ** y1) (x2 ** y2) Source Comments #

(Cartesian j, Cartesian k, Functor f) => MonoidalProfunctor (Costar f :: j -> k -> Type) Source Comments #

Every functor between cartesian categories is a colax monoidal functor.

Instance details

Defined in Proarrow.Profunctor.Costar

Methods

par0 :: Costar f (Unit :: j) (Unit :: k) Source Comments #

par :: forall (x1 :: j) (x2 :: k) (y1 :: j) (y2 :: k). Costar f x1 x2 -> Costar f y1 y2 -> Costar f (x1 ** y1) (x2 ** y2) Source Comments #

(Comonoid r, SelfAction k, SymMonoidal k) => MonoidalProfunctor (Reader ('OP r) :: k -> k -> Type) Source Comments #

Note: This is only premonoidal, not monoidal, unless the comonoid is cocommutative.

Instance details

Defined in Proarrow.Promonad.Reader

Methods

par0 :: Reader ('OP r) (Unit :: k) (Unit :: k) Source Comments #

par :: forall (x1 :: k) (x2 :: k) (y1 :: k) (y2 :: k). Reader ('OP r) x1 x2 -> Reader ('OP r) y1 y2 -> Reader ('OP r) (x1 ** y1) (x2 ** y2) Source Comments #

(Monoid w, SelfAction k) => MonoidalProfunctor (Writer w :: k -> k -> Type) Source Comments #

Note: This is only premonoidal, not monoidal, unless the monoid is commutative.

Instance details

Defined in Proarrow.Promonad.Writer

Methods

par0 :: Writer w (Unit :: k) (Unit :: k) Source Comments #

par :: forall (x1 :: k) (x2 :: k) (y1 :: k) (y2 :: k). Writer w x1 x2 -> Writer w y1 y2 -> Writer w (x1 ** y1) (x2 ** y2) Source Comments #

(MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (p :*: q :: k -> j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Product

Methods

par0 :: (p :*: q) (Unit :: k) (Unit :: j) Source Comments #

par :: forall (x1 :: k) (x2 :: j) (y1 :: k) (y2 :: j). (p :*: q) x1 x2 -> (p :*: q) y1 y2 -> (p :*: q) (x1 ** y1) (x2 ** y2) Source Comments #

(SymMonoidal j, SymMonoidal k, MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (Day p q :: j -> k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Day

Methods

par0 :: Day p q (Unit :: j) (Unit :: k) Source Comments #

par :: forall (x1 :: j) (x2 :: k) (y1 :: j) (y2 :: k). Day p q x1 x2 -> Day p q y1 y2 -> Day p q (x1 ** y1) (x2 ** y2) Source Comments #

(MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (p :.: q :: k -> j2 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Composition

Methods

par0 :: (p :.: q) (Unit :: k) (Unit :: j2) Source Comments #

par :: forall (x1 :: k) (x2 :: j2) (y1 :: k) (y2 :: j2). (p :.: q) x1 x2 -> (p :.: q) y1 y2 -> (p :.: q) (x1 ** y1) (x2 ** y2) Source Comments #

(Alternative f, Monoidal k, Distributive j) => MonoidalProfunctor (CoprodDom (Star f) :: k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

par0 :: CoprodDom (Star f) (Unit :: k) (Unit :: COPROD j) Source Comments #

par :: forall (x1 :: k) (x2 :: COPROD j) (y1 :: k) (y2 :: COPROD j). CoprodDom (Star f) x1 x2 -> CoprodDom (Star f) y1 y2 -> CoprodDom (Star f) (x1 ** y1) (x2 ** y2) Source Comments #

(TracedMonoidal k, Ob (Unit :: k)) => MonoidalProfunctor (IntConstruction :: INT k -> INT k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.IntConstruction

Methods

par0 :: IntConstruction (Unit :: INT k) (Unit :: INT k) Source Comments #

par :: forall (x1 :: INT k) (x2 :: INT k) (y1 :: INT k) (y2 :: INT k). IntConstruction x1 x2 -> IntConstruction y1 y2 -> IntConstruction (x1 ** y1) (x2 ** y2) Source Comments #

CategoryOf k => MonoidalProfunctor (List :: LIST k -> LIST k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.List

Methods

par0 :: List (Unit :: LIST k) (Unit :: LIST k) Source Comments #

par :: forall (x1 :: LIST k) (x2 :: LIST k) (y1 :: LIST k) (y2 :: LIST k). List x1 x2 -> List y1 y2 -> List (x1 ** y1) (x2 ** y2) Source Comments #

Num a => MonoidalProfunctor (Mat :: MatK a -> MatK a -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

par0 :: Mat (Unit :: MatK a) (Unit :: MatK a) Source Comments #

par :: forall (x1 :: MatK a) (x2 :: MatK a) (y1 :: MatK a) (y2 :: MatK a). Mat x1 x2 -> Mat y1 y2 -> Mat (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (PoAsCat :: POCATK Constraint -> POCATK Constraint -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

Methods

par0 :: PoAsCat (Unit :: POCATK Constraint) (Unit :: POCATK Constraint) Source Comments #

par :: forall (x1 :: POCATK Constraint) (x2 :: POCATK Constraint) (y1 :: POCATK Constraint) (y2 :: POCATK Constraint). PoAsCat x1 x2 -> PoAsCat y1 y2 -> PoAsCat (x1 ** y1) (x2 ** y2) Source Comments #

BiCCC k => MonoidalProfunctor (FreeCCC :: FK k -> FK k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Helper.CCC

Methods

par0 :: FreeCCC (Unit :: FK k) (Unit :: FK k) Source Comments #

par :: forall (x1 :: FK k) (x2 :: FK k) (y1 :: FK k) (y2 :: FK k). FreeCCC x1 x2 -> FreeCCC y1 y2 -> FreeCCC (x1 ** y1) (x2 ** y2) Source Comments #

Monoidal k => MonoidalProfunctor (Strictified :: [k] -> [k] -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

par0 :: Strictified (Unit :: [k]) (Unit :: [k]) Source Comments #

par :: forall (x1 :: [k]) (x2 :: [k]) (y1 :: [k]) (y2 :: [k]). Strictified x1 x2 -> Strictified y1 y2 -> Strictified (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Rev p :: REV k -> REV j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

par0 :: Rev p (Unit :: REV k) (Unit :: REV j) Source Comments #

par :: forall (x1 :: REV k) (x2 :: REV j) (y1 :: REV k) (y2 :: REV j). Rev p x1 x2 -> Rev p y1 y2 -> Rev p (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor p => MonoidalProfunctor (Op p :: OPPOSITE j -> OPPOSITE k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

par0 :: Op p (Unit :: OPPOSITE j) (Unit :: OPPOSITE k) Source Comments #

par :: forall (x1 :: OPPOSITE j) (x2 :: OPPOSITE k) (y1 :: OPPOSITE j) (y2 :: OPPOSITE k). Op p x1 x2 -> Op p y1 y2 -> Op p (x1 ** y1) (x2 ** y2) Source Comments #

(Functor f, Distributive j, Distributive k) => MonoidalProfunctor (Coprod (Star f) :: COPROD k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Star

Methods

par0 :: Coprod (Star f) (Unit :: COPROD k) (Unit :: COPROD j) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (Star f) x1 x2 -> Coprod (Star f) y1 y2 -> Coprod (Star f) (x1 ** y1) (x2 ** y2) Source Comments #

(HasCoproducts j, HasCoproducts k) => MonoidalProfunctor (Coprod (TerminalProfunctor :: k -> j -> Type) :: COPROD k -> COPROD j -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

par0 :: Coprod (TerminalProfunctor :: k -> j -> Type) (Unit :: COPROD k) (Unit :: COPROD j) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD j) (y1 :: COPROD k) (y2 :: COPROD j). Coprod (TerminalProfunctor :: k -> j -> Type) x1 x2 -> Coprod (TerminalProfunctor :: k -> j -> Type) y1 y2 -> Coprod (TerminalProfunctor :: k -> j -> Type) (x1 ** y1) (x2 ** y2) Source Comments #

(Profunctor f, Profunctor g, MonoidalProfunctor (Coprod f), MonoidalProfunctor (Coprod g)) => MonoidalProfunctor (Coprod (f :.: g) :: COPROD k -> COPROD j2 -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Composition

Methods

par0 :: Coprod (f :.: g) (Unit :: COPROD k) (Unit :: COPROD j2) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD j2) (y1 :: COPROD k) (y2 :: COPROD j2). Coprod (f :.: g) x1 x2 -> Coprod (f :.: g) y1 y2 -> Coprod (f :.: g) (x1 ** y1) (x2 ** y2) Source Comments #

HasCoproducts k => MonoidalProfunctor (Coprod (Id :: k -> k -> Type) :: COPROD k -> COPROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

par0 :: Coprod (Id :: k -> k -> Type) (Unit :: COPROD k) (Unit :: COPROD k) Source Comments #

par :: forall (x1 :: COPROD k) (x2 :: COPROD k) (y1 :: COPROD k) (y2 :: COPROD k). Coprod (Id :: k -> k -> Type) x1 x2 -> Coprod (Id :: k -> k -> Type) y1 y2 -> Coprod (Id :: k -> k -> Type) (x1 ** y1) (x2 ** y2) Source Comments #

(HasProducts k, Category cat) => MonoidalProfunctor (Prod cat :: PROD k -> PROD k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

par0 :: Prod cat (Unit :: PROD k) (Unit :: PROD k) Source Comments #

par :: forall (x1 :: PROD k) (x2 :: PROD k) (y1 :: PROD k) (y2 :: PROD k). Prod cat x1 x2 -> Prod cat y1 y2 -> Prod cat (x1 ** y1) (x2 ** y2) Source Comments #

(Promonad p, MonoidalProfunctor p) => MonoidalProfunctor (Kleisli :: KLEISLI p -> KLEISLI p -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

Methods

par0 :: Kleisli (Unit :: KLEISLI p) (Unit :: KLEISLI p) Source Comments #

par :: forall (x1 :: KLEISLI p) (x2 :: KLEISLI p) (y1 :: KLEISLI p) (y2 :: KLEISLI p). Kleisli x1 x2 -> Kleisli y1 y2 -> Kleisli (x1 ** y1) (x2 ** y2) Source Comments #

(Monoidal j, Monoidal k) => MonoidalProfunctor (Prof :: (j +-> k) -> (j +-> k) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Day

Methods

par0 :: Prof (Unit :: j +-> k) (Unit :: j +-> k) Source Comments #

par :: forall (x1 :: j +-> k) (x2 :: j +-> k) (y1 :: j +-> k) (y2 :: j +-> k). Prof x1 x2 -> Prof y1 y2 -> Prof (x1 ** y1) (x2 ** y2) Source Comments #

MonoidalProfunctor (Nat :: (Type -> Type) -> (Type -> Type) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Nat

Methods

par0 :: Nat (Unit :: Type -> Type) (Unit :: Type -> Type) Source Comments #

par :: forall (x1 :: Type -> Type) (x2 :: Type -> Type) (y1 :: Type -> Type) (y2 :: Type -> Type). Nat x1 x2 -> Nat y1 y2 -> Nat (x1 ** y1) (x2 ** y2) Source Comments #

(MonoidalProfunctor p, ob (Unit :: k), forall (a :: k) (b :: k). (ob a, ob b) => IsObMult ob a b) => MonoidalProfunctor (Sub p :: SUBCAT ob -> SUBCAT ob -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Sub

Methods

par0 :: Sub p (Unit :: SUBCAT ob) (Unit :: SUBCAT ob) Source Comments #

par :: forall (x1 :: SUBCAT ob) (x2 :: SUBCAT ob) (y1 :: SUBCAT ob) (y2 :: SUBCAT ob). Sub p x1 x2 -> Sub p y1 y2 -> Sub p (x1 ** y1) (x2 ** y2) Source Comments #

(MonoidalProfunctor p, MonoidalProfunctor q) => MonoidalProfunctor (p :**: q :: (k1, k2) -> (j1, j2) -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

par0 :: (p :**: q) (Unit :: (k1, k2)) (Unit :: (j1, j2)) Source Comments #

par :: forall (x1 :: (k1, k2)) (x2 :: (j1, j2)) (y1 :: (k1, k2)) (y2 :: (j1, j2)). (p :**: q) x1 x2 -> (p :**: q) y1 y2 -> (p :**: q) (x1 ** y1) (x2 ** y2) Source Comments #

(Bicategory kk, Ob0 kk k, Ob (I :: kk k k)) => MonoidalProfunctor (Endo :: ENDO kk k -> ENDO kk k -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Endo

Methods

par0 :: Endo (Unit :: ENDO kk k) (Unit :: ENDO kk k) Source Comments #

par :: forall (x1 :: ENDO kk k) (x2 :: ENDO kk k) (y1 :: ENDO kk k) (y2 :: ENDO kk k). Endo x1 x2 -> Endo y1 y2 -> Endo (x1 ** y1) (x2 ** y2) Source Comments #

class (CategoryOf k, MonoidalProfunctor ((~>) :: CAT k), Ob (Unit :: k)) => Monoidal k where Source Comments #

Associated Types

type Unit :: k Source Comments #

type (a :: k) ** (b :: k) :: k Source Comments #

Methods

withOb2 :: forall (a :: k) (b :: k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: k). Ob a => ((Unit :: k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: k). Ob a => a ~> ((Unit :: k) ** a) Source Comments #

rightUnitor :: forall (a :: k). Ob a => (a ** (Unit :: k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: k). Ob a => a ~> (a ** (Unit :: k)) Source Comments #

associator :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: k) (b :: k) (c :: k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Instances

Instances details
Monoidal BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Bool

type (a :: BOOL) ** (b :: BOOL) 
Instance details

Defined in Proarrow.Category.Instance.Bool

type (a :: BOOL) ** (b :: BOOL) = a && b

Methods

withOb2 :: forall (a :: BOOL) (b :: BOOL) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: BOOL). Ob a => ((Unit :: BOOL) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: BOOL). Ob a => a ~> ((Unit :: BOOL) ** a) Source Comments #

rightUnitor :: forall (a :: BOOL). Ob a => (a ** (Unit :: BOOL)) ~> a Source Comments #

rightUnitorInv :: forall (a :: BOOL). Ob a => a ~> (a ** (Unit :: BOOL)) Source Comments #

associator :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: BOOL) (b :: BOOL) (c :: BOOL). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal KIND Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Cat

type Unit = 'K ()
type (l :: KIND) ** (r :: KIND) 
Instance details

Defined in Proarrow.Category.Instance.Cat

type (l :: KIND) ** (r :: KIND) = 'K (UN 'K l, UN 'K r)

Methods

withOb2 :: forall (a :: KIND) (b :: KIND) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: KIND). Ob a => ((Unit :: KIND) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: KIND). Ob a => a ~> ((Unit :: KIND) ** a) Source Comments #

rightUnitor :: forall (a :: KIND). Ob a => (a ** (Unit :: KIND)) ~> a Source Comments #

rightUnitorInv :: forall (a :: KIND). Ob a => a ~> (a ** (Unit :: KIND)) Source Comments #

associator :: forall (a :: KIND) (b :: KIND) (c :: KIND). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: KIND) (b :: KIND) (c :: KIND). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Constraint

type (a :: CONSTRAINT) ** (b :: CONSTRAINT) 
Instance details

Defined in Proarrow.Category.Instance.Constraint

type (a :: CONSTRAINT) ** (b :: CONSTRAINT) = a && b

Methods

withOb2 :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: CONSTRAINT). Ob a => ((Unit :: CONSTRAINT) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: CONSTRAINT). Ob a => a ~> ((Unit :: CONSTRAINT) ** a) Source Comments #

rightUnitor :: forall (a :: CONSTRAINT). Ob a => (a ** (Unit :: CONSTRAINT)) ~> a Source Comments #

rightUnitorInv :: forall (a :: CONSTRAINT). Ob a => a ~> (a ** (Unit :: CONSTRAINT)) Source Comments #

associator :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: CONSTRAINT) (b :: CONSTRAINT) (c :: CONSTRAINT). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Linear

type Unit = 'L ()
type ('L a :: LINEAR) ** ('L b :: LINEAR) 
Instance details

Defined in Proarrow.Category.Instance.Linear

type ('L a :: LINEAR) ** ('L b :: LINEAR) = 'L (a, b)

Methods

withOb2 :: forall (a :: LINEAR) (b :: LINEAR) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: LINEAR). Ob a => ((Unit :: LINEAR) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: LINEAR). Ob a => a ~> ((Unit :: LINEAR) ** a) Source Comments #

rightUnitor :: forall (a :: LINEAR). Ob a => (a ** (Unit :: LINEAR)) ~> a Source Comments #

rightUnitorInv :: forall (a :: LINEAR). Ob a => a ~> (a ** (Unit :: LINEAR)) Source Comments #

associator :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: LINEAR) (b :: LINEAR) (c :: LINEAR). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal POINTED Source Comments #

The smash product of pointed sets. Monoids relative to the smash product are absorption monoids.

Instance details

Defined in Proarrow.Category.Instance.PointedHask

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

type Unit = 'P ()
type ('P a :: POINTED) ** ('P b :: POINTED) 
Instance details

Defined in Proarrow.Category.Instance.PointedHask

type ('P a :: POINTED) ** ('P b :: POINTED) = 'P (a, b)

Methods

withOb2 :: forall (a :: POINTED) (b :: POINTED) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: POINTED). Ob a => ((Unit :: POINTED) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: POINTED). Ob a => a ~> ((Unit :: POINTED) ** a) Source Comments #

rightUnitor :: forall (a :: POINTED). Ob a => (a ** (Unit :: POINTED)) ~> a Source Comments #

rightUnitorInv :: forall (a :: POINTED). Ob a => a ~> (a ** (Unit :: POINTED)) Source Comments #

associator :: forall (a :: POINTED) (b :: POINTED) (c :: POINTED). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: POINTED) (b :: POINTED) (c :: POINTED). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal Nat Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Simplex

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Simplex

type Unit = 'Z
type (a :: Nat) ** (b :: Nat) 
Instance details

Defined in Proarrow.Category.Instance.Simplex

type (a :: Nat) ** (b :: Nat) = a + b

Methods

withOb2 :: forall (a :: Nat) (b :: Nat) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: Nat). Ob a => ((Unit :: Nat) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: Nat). Ob a => a ~> ((Unit :: Nat) ** a) Source Comments #

rightUnitor :: forall (a :: Nat). Ob a => (a ** (Unit :: Nat)) ~> a Source Comments #

rightUnitorInv :: forall (a :: Nat). Ob a => a ~> (a ** (Unit :: Nat)) Source Comments #

associator :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: Nat) (b :: Nat) (c :: Nat). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal () Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

type Unit = TerminalObject :: ()
type (a :: ()) ** (b :: ()) 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: ()) ** (b :: ()) = a && b

Methods

withOb2 :: forall (a :: ()) (b :: ()) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: ()). Ob a => ((Unit :: ()) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: ()). Ob a => a ~> ((Unit :: ()) ** a) Source Comments #

rightUnitor :: forall (a :: ()). Ob a => (a ** (Unit :: ())) ~> a Source Comments #

rightUnitorInv :: forall (a :: ()). Ob a => a ~> (a ** (Unit :: ())) Source Comments #

associator :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: ()) (b :: ()) (c :: ()). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: Type) ** (b :: Type) 
Instance details

Defined in Proarrow.Object.BinaryProduct

type (a :: Type) ** (b :: Type) = a && b

Methods

withOb2 :: (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: Ob a => ((Unit :: Type) ** a) ~> a Source Comments #

leftUnitorInv :: Ob a => a ~> ((Unit :: Type) ** a) Source Comments #

rightUnitor :: Ob a => (a ** (Unit :: Type)) ~> a Source Comments #

rightUnitorInv :: Ob a => a ~> (a ** (Unit :: Type)) Source Comments #

associator :: (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(TracedMonoidal k, Ob (Unit :: k)) => Monoidal (INT k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.IntConstruction

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.IntConstruction

type Unit = 'I (Unit :: k) (Unit :: k)

Methods

withOb2 :: forall (a :: INT k) (b :: INT k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: INT k). Ob a => ((Unit :: INT k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: INT k). Ob a => a ~> ((Unit :: INT k) ** a) Source Comments #

rightUnitor :: forall (a :: INT k). Ob a => (a ** (Unit :: INT k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: INT k). Ob a => a ~> (a ** (Unit :: INT k)) Source Comments #

associator :: forall (a :: INT k) (b :: INT k) (c :: INT k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: INT k) (b :: INT k) (c :: INT k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

CategoryOf k => Monoidal (LIST k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.List

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.List

type Unit = 'L ('[] :: [k])

Methods

withOb2 :: forall (a :: LIST k) (b :: LIST k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: LIST k). Ob a => ((Unit :: LIST k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: LIST k). Ob a => a ~> ((Unit :: LIST k) ** a) Source Comments #

rightUnitor :: forall (a :: LIST k). Ob a => (a ** (Unit :: LIST k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: LIST k). Ob a => a ~> (a ** (Unit :: LIST k)) Source Comments #

associator :: forall (a :: LIST k) (b :: LIST k) (c :: LIST k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: LIST k) (b :: LIST k) (c :: LIST k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Num a => Monoidal (MatK a) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Mat

type Unit = 'M ('S 'Z) :: MatK a

Methods

withOb2 :: forall (a0 :: MatK a) (b :: MatK a) r. (Ob a0, Ob b) => (Ob (a0 ** b) => r) -> r Source Comments #

leftUnitor :: forall (a0 :: MatK a). Ob a0 => ((Unit :: MatK a) ** a0) ~> a0 Source Comments #

leftUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> ((Unit :: MatK a) ** a0) Source Comments #

rightUnitor :: forall (a0 :: MatK a). Ob a0 => (a0 ** (Unit :: MatK a)) ~> a0 Source Comments #

rightUnitorInv :: forall (a0 :: MatK a). Ob a0 => a0 ~> (a0 ** (Unit :: MatK a)) Source Comments #

associator :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => ((a0 ** b) ** c) ~> (a0 ** (b ** c)) Source Comments #

associatorInv :: forall (a0 :: MatK a) (b :: MatK a) (c :: MatK a). (Ob a0, Ob b, Ob c) => (a0 ** (b ** c)) ~> ((a0 ** b) ** c) Source Comments #

Monoidal (POCATK Constraint) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

type (a :: POCATK Constraint) ** (b :: POCATK Constraint) 
Instance details

Defined in Proarrow.Category.Instance.PreorderAsCategory

type (a :: POCATK Constraint) ** (b :: POCATK Constraint) = a && b

Methods

withOb2 :: forall (a :: POCATK Constraint) (b :: POCATK Constraint) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: POCATK Constraint). Ob a => ((Unit :: POCATK Constraint) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: POCATK Constraint). Ob a => a ~> ((Unit :: POCATK Constraint) ** a) Source Comments #

rightUnitor :: forall (a :: POCATK Constraint). Ob a => (a ** (Unit :: POCATK Constraint)) ~> a Source Comments #

rightUnitorInv :: forall (a :: POCATK Constraint). Ob a => a ~> (a ** (Unit :: POCATK Constraint)) Source Comments #

associator :: forall (a :: POCATK Constraint) (b :: POCATK Constraint) (c :: POCATK Constraint). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: POCATK Constraint) (b :: POCATK Constraint) (c :: POCATK Constraint). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal k => Monoidal (REV k) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

type Unit = 'R (Unit :: k)

Methods

withOb2 :: forall (a :: REV k) (b :: REV k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: REV k). Ob a => ((Unit :: REV k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: REV k). Ob a => a ~> ((Unit :: REV k) ** a) Source Comments #

rightUnitor :: forall (a :: REV k). Ob a => (a ** (Unit :: REV k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: REV k). Ob a => a ~> (a ** (Unit :: REV k)) Source Comments #

associator :: forall (a :: REV k) (b :: REV k) (c :: REV k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: REV k) (b :: REV k) (c :: REV k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal k => Monoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Opposite

type Unit = 'OP (Unit :: k)

Methods

withOb2 :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: OPPOSITE k). Ob a => ((Unit :: OPPOSITE k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: OPPOSITE k). Ob a => a ~> ((Unit :: OPPOSITE k) ** a) Source Comments #

rightUnitor :: forall (a :: OPPOSITE k). Ob a => (a ** (Unit :: OPPOSITE k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: OPPOSITE k). Ob a => a ~> (a ** (Unit :: OPPOSITE k)) Source Comments #

associator :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: OPPOSITE k) (b :: OPPOSITE k) (c :: OPPOSITE k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

BiCCC k => Monoidal (FK k) Source Comments # 
Instance details

Defined in Proarrow.Helper.CCC

Associated Types

type Unit 
Instance details

Defined in Proarrow.Helper.CCC

type Unit = TerminalObject :: FK k

Methods

withOb2 :: forall (a :: FK k) (b :: FK k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: FK k). Ob a => ((Unit :: FK k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: FK k). Ob a => a ~> ((Unit :: FK k) ** a) Source Comments #

rightUnitor :: forall (a :: FK k). Ob a => (a ** (Unit :: FK k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: FK k). Ob a => a ~> (a ** (Unit :: FK k)) Source Comments #

associator :: forall (a :: FK k) (b :: FK k) (c :: FK k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: FK k) (b :: FK k) (c :: FK k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

HasCoproducts k => Monoidal (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

type Unit = 'COPR (InitialObject :: k)

Methods

withOb2 :: forall (a :: COPROD k) (b :: COPROD k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: COPROD k). Ob a => ((Unit :: COPROD k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: COPROD k). Ob a => a ~> ((Unit :: COPROD k) ** a) Source Comments #

rightUnitor :: forall (a :: COPROD k). Ob a => (a ** (Unit :: COPROD k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: COPROD k). Ob a => a ~> (a ** (Unit :: COPROD k)) Source Comments #

associator :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: COPROD k) (b :: COPROD k) (c :: COPROD k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

HasProducts k => Monoidal (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Associated Types

type Unit 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

withOb2 :: forall (a :: PROD k) (b :: PROD k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: PROD k). Ob a => ((Unit :: PROD k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: PROD k). Ob a => a ~> ((Unit :: PROD k) ** a) Source Comments #

rightUnitor :: forall (a :: PROD k). Ob a => (a ** (Unit :: PROD k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: PROD k). Ob a => a ~> (a ** (Unit :: PROD k)) Source Comments #

associator :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: PROD k) (b :: PROD k) (c :: PROD k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal k => Monoidal [k] Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

type Unit = '[] :: [k]

Methods

withOb2 :: forall (a :: [k]) (b :: [k]) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: [k]). Ob a => ((Unit :: [k]) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: [k]). Ob a => a ~> ((Unit :: [k]) ** a) Source Comments #

rightUnitor :: forall (a :: [k]). Ob a => (a ** (Unit :: [k])) ~> a Source Comments #

rightUnitorInv :: forall (a :: [k]). Ob a => a ~> (a ** (Unit :: [k])) Source Comments #

associator :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: [k]) (b :: [k]) (c :: [k]). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(Promonad p, MonoidalProfunctor p) => Monoidal (KLEISLI p) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

type Unit = 'KL (Unit :: k) :: KLEISLI p

Methods

withOb2 :: forall (a :: KLEISLI p) (b :: KLEISLI p) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: KLEISLI p). Ob a => ((Unit :: KLEISLI p) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: KLEISLI p). Ob a => a ~> ((Unit :: KLEISLI p) ** a) Source Comments #

rightUnitor :: forall (a :: KLEISLI p). Ob a => (a ** (Unit :: KLEISLI p)) ~> a Source Comments #

rightUnitorInv :: forall (a :: KLEISLI p). Ob a => a ~> (a ** (Unit :: KLEISLI p)) Source Comments #

associator :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: KLEISLI p) (b :: KLEISLI p) (c :: KLEISLI p). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(Monoidal k, ob (Unit :: k), forall (a :: k) (b :: k). (ob a, ob b) => IsObMult ob a b) => Monoidal (SUBCAT ob) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Sub

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Sub

type Unit = 'SUB (Unit :: k) :: SUBCAT ob

Methods

withOb2 :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: SUBCAT ob). Ob a => ((Unit :: SUBCAT ob) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: SUBCAT ob). Ob a => a ~> ((Unit :: SUBCAT ob) ** a) Source Comments #

rightUnitor :: forall (a :: SUBCAT ob). Ob a => (a ** (Unit :: SUBCAT ob)) ~> a Source Comments #

rightUnitorInv :: forall (a :: SUBCAT ob). Ob a => a ~> (a ** (Unit :: SUBCAT ob)) Source Comments #

associator :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) (c :: SUBCAT ob). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: SUBCAT ob) (b :: SUBCAT ob) (c :: SUBCAT ob). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(Monoidal j, Monoidal k) => Monoidal (PRO j k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Day

Associated Types

type Unit 
Instance details

Defined in Proarrow.Profunctor.Day

type Unit = DayUnit :: j -> k -> Type

Methods

withOb2 :: forall (a :: PRO j k) (b :: PRO j k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: PRO j k). Ob a => ((Unit :: PRO j k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: PRO j k). Ob a => a ~> ((Unit :: PRO j k) ** a) Source Comments #

rightUnitor :: forall (a :: PRO j k). Ob a => (a ** (Unit :: PRO j k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: PRO j k). Ob a => a ~> (a ** (Unit :: PRO j k)) Source Comments #

associator :: forall (a :: PRO j k) (b :: PRO j k) (c :: PRO j k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: PRO j k) (b :: PRO j k) (c :: PRO j k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(Monoidal j, Monoidal k) => Monoidal (j, k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Product

type Unit = '(Unit :: j, Unit :: k)

Methods

withOb2 :: forall (a :: (j, k)) (b :: (j, k)) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: (j, k)). Ob a => ((Unit :: (j, k)) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: (j, k)). Ob a => a ~> ((Unit :: (j, k)) ** a) Source Comments #

rightUnitor :: forall (a :: (j, k)). Ob a => (a ** (Unit :: (j, k))) ~> a Source Comments #

rightUnitorInv :: forall (a :: (j, k)). Ob a => a ~> (a ** (Unit :: (j, k))) Source Comments #

associator :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: (j, k)) (b :: (j, k)) (c :: (j, k)). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

Monoidal (Type -> Type) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Nat

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.Nat

type Unit = Identity
type (f :: Type -> Type) ** (g :: Type -> Type) 
Instance details

Defined in Proarrow.Category.Instance.Nat

type (f :: Type -> Type) ** (g :: Type -> Type) = Compose f g

Methods

withOb2 :: forall (a :: Type -> Type) (b :: Type -> Type) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: Type -> Type). Ob a => ((Unit :: Type -> Type) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: Type -> Type). Ob a => a ~> ((Unit :: Type -> Type) ** a) Source Comments #

rightUnitor :: forall (a :: Type -> Type). Ob a => (a ** (Unit :: Type -> Type)) ~> a Source Comments #

rightUnitorInv :: forall (a :: Type -> Type). Ob a => a ~> (a ** (Unit :: Type -> Type)) Source Comments #

associator :: forall (a :: Type -> Type) (b :: Type -> Type) (c :: Type -> Type). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: Type -> Type) (b :: Type -> Type) (c :: Type -> Type). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

(Bicategory kk, Ob0 kk k, Ob (I :: kk k k)) => Monoidal (ENDO kk k) Source Comments #

The monoidal subcategory of a bicategory for a single object.

Instance details

Defined in Proarrow.Category.Monoidal.Endo

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Monoidal.Endo

type Unit = 'E (I :: kk k k)

Methods

withOb2 :: forall (a :: ENDO kk k) (b :: ENDO kk k) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Comments #

leftUnitor :: forall (a :: ENDO kk k). Ob a => ((Unit :: ENDO kk k) ** a) ~> a Source Comments #

leftUnitorInv :: forall (a :: ENDO kk k). Ob a => a ~> ((Unit :: ENDO kk k) ** a) Source Comments #

rightUnitor :: forall (a :: ENDO kk k). Ob a => (a ** (Unit :: ENDO kk k)) ~> a Source Comments #

rightUnitorInv :: forall (a :: ENDO kk k). Ob a => a ~> (a ** (Unit :: ENDO kk k)) Source Comments #

associator :: forall (a :: ENDO kk k) (b :: ENDO kk k) (c :: ENDO kk k). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv :: forall (a :: ENDO kk k) (b :: ENDO kk k) (c :: ENDO kk k). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

obj2 :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a, Ob b) => Obj (a ** b) Source Comments #

leftUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> ((Unit :: k) ** a) ~> b Source Comments #

leftUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> ((Unit :: k) ** b) Source Comments #

rightUnitor' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> (a ** (Unit :: k)) ~> b Source Comments #

rightUnitorInv' :: forall k (a :: k) (b :: k). Monoidal k => (a ~> b) -> a ~> (b ** (Unit :: k)) Source Comments #

associator' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> ((a ** b) ** c) ~> (a ** (b ** c)) Source Comments #

associatorInv' :: forall {k} (a :: k) (b :: k) (c :: k). Monoidal k => Obj a -> Obj b -> Obj c -> (a ** (b ** c)) ~> ((a ** b) ** c) Source Comments #

leftUnitorWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => (b ~> (Unit :: k)) -> (b ** a) ~> a Source Comments #

leftUnitorInvWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => ((Unit :: k) ~> b) -> a ~> (b ** a) Source Comments #

rightUnitorWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => (b ~> (Unit :: k)) -> (a ** b) ~> a Source Comments #

rightUnitorInvWith :: forall {k} (a :: k) (b :: k). (Monoidal k, Ob a) => ((Unit :: k) ~> b) -> a ~> (a ** b) Source Comments #

class Monoidal k => SymMonoidal k where Source Comments #

Methods

swap :: forall (a :: k) (b :: k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

Instances

Instances details
SymMonoidal BOOL Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Bool

Methods

swap :: forall (a :: BOOL) (b :: BOOL). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal KIND Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Cat

Methods

swap :: forall (a :: KIND) (b :: KIND). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal CONSTRAINT Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Constraint

Methods

swap :: forall (a :: CONSTRAINT) (b :: CONSTRAINT). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal LINEAR Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Linear

Methods

swap :: forall (a :: LINEAR) (b :: LINEAR). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal () Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

swap :: forall (a :: ()) (b :: ()). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal Type Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

swap :: (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

(TracedMonoidal k, Ob (Unit :: k)) => SymMonoidal (INT k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.IntConstruction

Methods

swap :: forall (a :: INT k) (b :: INT k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

Num a => SymMonoidal (MatK a) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Mat

Methods

swap :: forall (a0 :: MatK a) (b :: MatK a). (Ob a0, Ob b) => (a0 ** b) ~> (b ** a0) Source Comments #

SymMonoidal k => SymMonoidal (REV k) Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Rev

Methods

swap :: forall (a :: REV k) (b :: REV k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal k => SymMonoidal (OPPOSITE k) Source Comments # 
Instance details

Defined in Proarrow.Category.Opposite

Methods

swap :: forall (a :: OPPOSITE k) (b :: OPPOSITE k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

BiCCC k => SymMonoidal (FK k) Source Comments # 
Instance details

Defined in Proarrow.Helper.CCC

Methods

swap :: forall (a :: FK k) (b :: FK k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

HasCoproducts k => SymMonoidal (COPROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryCoproduct

Methods

swap :: forall (a :: COPROD k) (b :: COPROD k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

HasProducts k => SymMonoidal (PROD k) Source Comments # 
Instance details

Defined in Proarrow.Object.BinaryProduct

Methods

swap :: forall (a :: PROD k) (b :: PROD k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

SymMonoidal k => SymMonoidal [k] Source Comments # 
Instance details

Defined in Proarrow.Category.Monoidal.Strictified

Methods

swap :: forall (a :: [k]) (b :: [k]). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

(Promonad p, MonoidalProfunctor p, SymMonoidal k) => SymMonoidal (KLEISLI p) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Kleisli

Methods

swap :: forall (a :: KLEISLI p) (b :: KLEISLI p). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

(SymMonoidal k, ob (Unit :: k), forall (a :: k) (b :: k). (ob a, ob b) => IsObMult ob a b) => SymMonoidal (SUBCAT ob) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Sub

Methods

swap :: forall (a :: SUBCAT ob) (b :: SUBCAT ob). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

(SymMonoidal j, SymMonoidal k) => SymMonoidal (PRO j k) Source Comments # 
Instance details

Defined in Proarrow.Profunctor.Day

Methods

swap :: forall (a :: PRO j k) (b :: PRO j k). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

(SymMonoidal j, SymMonoidal k) => SymMonoidal (j, k) Source Comments # 
Instance details

Defined in Proarrow.Category.Instance.Product

Methods

swap :: forall (a :: (j, k)) (b :: (j, k)). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Comments #

swap' :: forall {k} (a :: k) (a' :: k) (b :: k) (b' :: k). SymMonoidal k => (a ~> a') -> (b ~> b') -> (a ** b) ~> (b' ** a') Source Comments #

first :: forall {k} (c :: k) (a :: k) (b :: k). (Monoidal k, Ob c) => (a ~> b) -> (a ** c) ~> (b ** c) Source Comments #

second :: forall {k} (c :: k) (a :: k) (b :: k). (Monoidal k, Ob c) => (a ~> b) -> (c ** a) ~> (c ** b) Source Comments #

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 Comments #

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 Comments #

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 Comments #

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 Comments #

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 Comments #